• 【操作系统】文件管理


    4.1.1 文件管理

    文件:一组有意义的信息集合

    • 问题1:文件内部的数据怎样组织起来?
    • 问题2:文件之间又应该怎样组织起来?
    • 问题3:操作系统应该提供哪些功能,才能方便用户、应用程序使用文件?
    • 问题4:文件数据应该怎么存放在外存上?

    image-20220822094404305

    文件的属性

    文件名:又创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下补允许有重名文件。

    标识符:每一个文件都有一个唯一的标识符用来区分文件,但是对用户来说无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。

    文件类型:指明文件的类型(txt,jpg…)

    位置:文件存放的路径(用户看到的),在外存中的路径(操作系统用的,用户不可见)

    大小:指明文件大小

    创建时间、修改时间

    文件所有者信息

    保护信息:对文件进行保护的访问控制信息

    image-20220822101438201

    文件内部的数据如何组织?

    无结构文件:文本文件,有一些二进制或字符流组成,又称流式文件

    有结构文件:由一组相似的记录组成,记录时一组相关数据的集合

    image-20220822101636283

    文件之间如何组织?

    树形结构

    image-20220822101800466

    操作系统为上层提供哪些功能

    创建文件create系统调用

    读文件:将文件数据读入内存,才能让CPU处理,提供read系统调用

    写文件:将更改过的文件数据写回外存,我们在记事本上编辑完数据内容后,点击保存后,记事本会通过操作系统的write系统调用将文件从内存写回外存。

    删除文件delete系统调用将文件从外存中删除

    打开文件open系统调用

    关闭文件close系统调用

    复制文件:先创建一个新文件,在把源文件读入内存,再将内存中的数据写回到新文件中。

    文件如何存放在外存?

    image-20220822102459381

    连续存放还是离散存放?

    image-20220822102510104

    4.1.2 文件的基础操作

    image-20220822102711215

    创建文件

    进行create 系统调用时,需要提供的参数

    1. 所需的外存空间大小
    2. 文件存放路径
    3. 文件名

    操作系统处理create系统调用

    1. 为新文件分配必要的外存空间
    2. 在文件目录中创建一个目录项,包含这个文件的文件名以及在外存中的地址等属性。

    image-20220822111742671

    删除文件

    1. 从目录中找到要删除文件的目录项,使之为空项
    2. 回收该文件所占用的存储空间

    image-20220822173202476

    打开文件

    1. 在目录中找到对应的文件
    2. 将文件复制到内存中的打开文件表中,并将对应表的编号返回给用户

    image-20220822173748641

    当我们打开了一个文件在删除发现删除不了,这是为啥?

    系统的打开文件表中记录了每个文件被打开的次数,当想要删除这个文件时,需要先检查打开记录表中这个文件有没有被打开,如果有则不能被删除。

    image-20220822174550583

    关闭文件

    1. 将进程的打开文件表相应表项删除
    2. 回收分配给该文件的内存空间等资源
    3. 系统打开文件表的打开计数器减1,为0时删掉对应表项

    读文件

    1. 根据文件名查找目录,得到被读文件在外存中的地址
    2. 在目标项中,还有一个指针用于对文件进行读操作,读到内存中去

    image-20220822175022346

    写文件

    1. 根据文件名查找目录
    2. 找到指定文件的目标项
    3. 利用目录中的写指针进行写操作

    将编辑过的文件写回外存,这个文件先是保留在内存中的。

    image-20220822175250672

    4.1.3 文件保护

    口令保护

    image-20220822182241046

    加密保护

    image-20220822182356145

    访问控制

    以用户为单位进行控制

    这样会导致访问控制列表会很大

    image-20220822182443354

    以组为单位进行控制

    image-20220822182613140

    4.1.4 文件的逻辑结构

    逻辑结构:指用户看来,文件内部的数据应该是如何组织起来的

    物理结构:指的是在操作系统看来,文件的数据是如何存放在外存的。

    无结构文件

    image-20220822195955890

    有结构文件

    由一组相似的记录组成,每条记录由若干个数据项组成。每条记录有一个数据项可作为关键字。

    根据各条记录的长度,可分为定长记录可变长记录

    定长记录

    image-20220822201359424

    可变长记录

    image-20220822201429930

    顺序文件

    串结构:记录之间的顺序与关键字无关

    顺序结构:记录之间的顺序按关键字顺序排列

    image-20220822202317576

    数组和链表的区别

    image-20220822210712476

    索引文件

    对于不定长记录,可以在弄一个索引表,将每个记录的地址都记录在索引表中,这样就可以实现随机存取了, 如果按关键字顺序排列,还可以使用折半查找。

    image-20220822211333093

    索引顺序文件

    为了加快查找,可以将索引表中一个索引项记录一组记录,节约了很多资源,也加快了查找速度

    image-20220822211749764

    多级索引文件

    image-20220822211952837

    image-20220822212209359

    4.1.5 文件的物理结构

    文件块、磁盘块

    磁盘是按块来分配的,一个文件会分为好几个块进行存储。

    image-20220822212555262

    image-20220822213025497

    文件分配方式–连续分配

    优点

    1. 可以实现顺序访问和随机访问
    2. 读/写速度快

    image-20220822213657097

    image-20220822214146267

    缺点

    1. 当文件想要拓展时,发现连续的物理块已经被占用了,只能将整个文件迁徙到其他连续的物理块
    2. 当有多个空闲块,但不是连续的时,一个文件就无法存储在磁盘中,浪费了很多资源,会产生磁盘碎片

    image-20220822214330750

    image-20220822214602624

    链接分配–隐式链接

    链表的形式链接,只能从表头指针一直往下找,只支持顺序访问,效率低。但很方便拓展,不会产生外部碎片。

    image-20220822215039680

    image-20220822215126341

    链接分配–显示连接

    用一个表记录每个物理块以及它的下一个块的地址。

    这样就可以在查找的过程中不去在磁盘上查找而是在表上查找,可以很大地提高查找效率。

    image-20220822215510348

    这里为什么可以实现随机访问?

    image-20220822220011880

    image-20220822220323127

    索引分配

    数组的形式记录了每个逻辑块对应的物理块。

    image-20220822220942747

    image-20220822221218556

    若一个磁盘块1KB,一个索引项4B,则一个磁盘块只能存256个索引项。

    如果一个文件的大小操作过了256块,那么一个磁盘是装不下的,如何解决呢?

    链接方案

    如果索引表太大,一个索引块放不下,那么可以将多个索引块链接起来存放。

    image-20220822221951462

    多级索引方案

    image-20220822222418509

    混合索引

    前面两种的混合方案

    image-20220822224113748

    总结

    image-20220822224427457

    image-20220822224607491

    4.2.1 文件目录

    文件控制块

    image-20220822225235113

    image-20220822225502280

    image-20220822225812398

    单级文件目录

    image-20220822225926331

    两级文件目录

    image-20220822230051889

    多级目录结构(树形目录结构)

    image-20220822230308427

    image-20220822230510059

    无环图目录结构

    树形结构很难实现文件共享

    image-20220822230804984

    索引节点

    image-20220822231356187

    4.2.2 文件共享

    操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件。

    复制是将一个文件复制多份,各个文件是独立地,互不影响。

    基于索引节点地共享方式(硬链接)

    每个用户拥有不同的目录,不同文件名的索引节点指针可以指向同一个文件。

    image-20220823101432440

    基于符号链的共享方式(软连接)

    一个用户想要共享某个文件可以用一个文件记录想要共享文件的存放路径,这样通过存储路径去目录中查找,也可以实现共享。

    image-20220823101707635

    image-20220823102014810

    如果文件被删除的话,快捷方式就没用了。

    image-20220823102112405

    image-20220823102205879

    总结

    image-20220823102324484

    4.3.1 文件系统的层次结构

    image-20220823103837926

    image-20220823104440029

    4.3.2 文件存储路径管理

    存储空间的划分与初始化

    存储空间的划分:将物理磁盘划分为一个个文件卷(C盘,D盘)

    初始化:将各个文件卷划分为目录区、文件区

    目录区存放文件目录信息,用于磁盘存储空间管理的信息

    文件区存放文件数据

    image-20220823105843307

    存储空间管理–空闲表法

    空闲表存储每个连续空闲块的第一个空闲块的地址以及这个连续空闲块的大小。

    image-20220823112003648

    存储空间管理–空闲链表法

    image-20220823154521682

    和队列一样,从队头出去,队尾进来。

    image-20220823154535987

    image-20220823154856017

    存储空间管理–位示图法

    image-20220823155811271

    image-20220823155932097

    存储空间管理–成组链接法

    image-20220823160109305

    image-20220823161415614

    image-20220823161448677

    image-20220823161508552

    image-20220823161521141

    image-20220823161615467

  • 相关阅读:
    【ArcGIS微课1000例】0041:ArcGIS利用坐标生成点的方法总结
    创建TypeScript代码模板(NVS+Yarn+ESLint+Prettier+Husky)
    Vue中使组件置顶后悬浮
    武汉新时标文化传媒有限公司抖音小店如何提高出单量?
    活体检测 LGSC 论文学习笔记
    npm或pnpm终端执行失败问题
    数据可视化
    【通信】Matlab实现多同步压缩变换
    【KD】2022 ECCV Factorizing Knowledge in Neural Networks
    一套 .NET开发的邮箱Mail开源库
  • 原文地址:https://blog.csdn.net/weixin_53029342/article/details/126487758