• 操作系统学习笔记(Ⅳ):文件


    目录

    1 文件管理

    1.1 初识文件管理

    1.文件属性

    2.文件数据组织

    3.向上功能

    1.2 文件逻辑结构

    1.无结构文件

    2.有结构文件

    3.顺序文件

    4.索引文件

    5.索引顺序文件

    1.3 文件目录

    1.文件控制块

    2.目录结构

    3.索引结点

    1.4 文件物理结构

    1.连续分配

    2.链接分配

    3.索引分配

    1.5 文件存储空间管理

    1.存储空间的划分与初始化

    2.空闲表法

    3.空闲链表法

    4.位示图法

    5.成组链接法

    1.6 文件基本操作

    1.创建文件

    2.删除文件

    3.读文件

    4.写文件

    5.打开文件

    6.关闭文件

    1.7 文件共享

    1.基于索引结点的共享方式

    2.基于符号链的共享方式

    1.8 文件保护

    1.口令保护

    2.加密保护

    3.访问控制

    1.9 文件系统的层次结构

    2 磁盘

    2.1 磁盘结构 

    1.组成

    2.读写数据

    3.磁盘物理地址

    4.磁盘分类

    2.2 磁盘调度算法

    1.磁盘操作时间

    2.磁盘调度算法

    2.3 减少磁盘延迟时间方法

    1.延迟时间问题

    2.交替编号

    3.磁盘地址结构设计

    4.错位命名

    2.4 磁盘的管理

    1.磁盘初始化

    2.引导块

    3.坏块处理


    1 文件管理

    1.1 初识文件管理

    1.文件属性

    文件名:方便用户找到文件,同一目录下不能有重名文件。

    标识符:区分各个文件的一种内部名称

    类型:指明文件类型

    位置:文件存放路径(用户使用)、在外存中的地址(操作系统使用)

    大小、创建时间、保护信息等

    2.文件数据组织

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

    有结构文件:由一组相似的记录组成,又称记录式文件

    3.向上功能

    创建文件:create系统调用

    读文件:read系统调用

    写文件:write系统调用

    删除文件:delete系统调用

    打开文件:open系统调用

    关闭文件:close系统调用

    1.2 文件逻辑结构

    1.无结构文件

    由一些二进制或字符流组成,又称流式文件

    2.有结构文件

    由一组相似的记录组成,又称记录式文件,每条记录由若干个数据项组成。每条记录中又一个数据项作为关键字。根据各条记录的长度是否相等,可分为定长记录可变长记录两种。

    3.顺序文件

    文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。

    顺序文件的缺点是增删一个记录较为困难 

    4.索引文件

    为了在可变长记录文件中快速找到第i个记录,建立一张索引表,每条记录对应一个索引项。索引表本身是定长记录的顺序文件

    5.索引顺序文件

    索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是: 并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。为了进一步提高检索效率,可以为顺序文件建立多级索引表。
     

    1.3 文件目录

    1.文件控制块

     目录文件中的一条记录就是一个文件控制块(FCB)

    2.目录结构

    ·单级目录:系统中只建立一张目录表,每个文件占一个目录项。但不允许文件重名。

    ·两级目录结构:包括主文件目录和用户文件目录。允许不同用户的文件重名。

    ·多级目录结构:又称树形目录结构。当用户从根目录开始访问某个文件时使用绝对路径;当用户从当前目录出发访问时使用相对路径。但多级目录结构不便于文件的共享

    ·无环图目录结构:可以用不同的文件名指向同一个文件,需要为每个共享结点设置共享计数器,用于记录此时有多少共享,当进行删除操作时,FCB被删除,共享计数器减一,只有当共享计数器为0时,结点被删除

    3.索引结点

    将除文件名外的所有信息都存入索引结点中,可以提升文件检索速度。

    1.4 文件物理结构

    在外存管理中,为方便对文件数据的管理,文件的逻辑地址空间被划分为文件块。将文件的逻辑地址转换为物理地址即文件分配方式,包括连续分配、链接分配及索引分配。

    1.连续分配

    每个文件在磁盘上占有一组连续的块。操作系统只需转换逻辑块号为物理块号,块内地址保持不变(物理块号 = 起始块号 + 逻辑块号)。连续分配支持顺序访问和直接访问,其在顺序读写时速度最快。

    但该分配方式不便于拓展,且存储空间利用率低,会产生磁盘碎片。

    2.链接分配

    采用离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显式链接。

    ·隐式链接

    只支持顺序访问,不支持随机访问,查找效率较低。但便于拓展文件,不会有磁盘碎片问题。

    ·显式链接

    将用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表(FAT)。一个磁盘仅设置一个FAT。从目录项找到起始块号,若i>0,则查询内存中的文件分配表,往后找到i号逻辑块对应的物理块号。逻辑块号转换成物理块号的过程不需要读磁盘操作。因此访问速度较快,但FAT需要占用一定内存空间。

    3.索引分配

    索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表――建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
    从目录项中可知索开画放位置,将索引表从外存读入内存,并查找索引表即可只i号逻辑块在外存中的存放位置。

    索引分配支持随机访问,文件拓展较方便,但索引表需要占据一定空间

    若文件大小超过了磁盘块大小,其解决方式如下:

    ·链接方案

    若索引表过大,将多个索引块链接存放。

    ·多层索引

    建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。各层索引表大小不能超过一个磁盘块。

    采用n层索引结构,且顶级索引表未调入内存,则访问弄一个数据块需要K+1次读磁盘操作。

    计算:若磁盘块大小为x,一个索引表项占y,则一个磁盘块能存放 z = x / y 个索引项。若采用n层索引,则该文件最大长度可以为z^n * x 

    ·混合索引

    多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)。

    1.5 文件存储空间管理

    管理空闲磁盘区

    1.存储空间的划分与初始化

    存储空间的划分:将物理磁盘划分为文件卷

    存储空间初始化:将各文件卷划分为目录区(存放文件目录信息、用于磁盘存储空间管理的信息)、文件区(存放文件数据)

    2.空闲表法

    记录空闲盘块起始位置与块数,适用于连续分配方法。 

    3.空闲链表法

    空闲盘块链中系统保存着链头和链尾指针。若某文件申请K个盘块,则从链头开始一次分配K个盘块,并修改空闲链的链头指针。

    空闲盘区链中:若某文件申请K个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲盘区,分配给文件。若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针、盘区大小等数据。

    4.位示图

     

    5.成组链接法

    文件卷的目录区中专门用一个磁盘块作为“超级块”,当系统启动时需要将超级块读入内存。并且要保证内存与外存中的“超级块”数据一致。

    1.6 文件基本操作

    1.创建文件

    2.删除文件

    3.读文件

    4.写文件

    5.打开文件

    6.关闭文件

    1.7 文件共享

    1.基于索引结点的共享方式

    设置一个包含文件物理地址都索引结点,内置一个链接技术变量count,用于表示链接到本索引结点上的用户目录项数。

    2.基于符号链的共享方式

    1.8 文件保护

    1.口令保护

    设置存放在系统内部的访问口令,一致时才可访问

    2.加密保护

    使用加密密码对文件进行加密,如异或加密,需要花费一定时间

    3.访问控制

    在每个文件FCB中增加访问控制列表,限制不同用户可以执行的操作

    为了精简访问列表,可以以组为单位,标记各组用户的权限。

    1.9 文件系统的层次结构

    2 磁盘

    2.1 磁盘结构 

    1.组成

    磁盘:表面由磁性物质组成,可记录二进制数据

    磁道:磁盘的盘面被划分成一个个磁道

    扇区:一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”。各个扇区存放的数据量相同(如1KB)。最内侧数据密度最大

    2.读写数据

    需要把“磁头”移动到想要读/写的扇区所在的磁道。磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作。


    3.磁盘物理地址

    4.磁盘分类

    根据磁头类型分为:活动头磁盘、固定头磁盘

    根据盘片是否可更换分为:可换盘磁盘、固定盘磁盘

    2.2 磁盘调度算法

    1.磁盘操作时间

    2.磁盘调度算法

    ·先来先服务(FCFS):根据进程请求访问磁盘的先后顺序进行调度。公平但性能差,寻道时间长

    ·最短寻找时间优先(SSTF):优先处理的磁道是与当前磁头最近的磁道。性能好,但可能产生饥饿现象

    ·扫描算法(SCAN):只有磁头移动到最外侧磁道时才能往内移动,移动到最内侧磁道时才能往外移动。不会产生饥饿现象,但不同磁道响应频率不平均。

    ·LOOK调度算法:若磁头移动方向上没有请求,立即改变磁头移动方向。

    ·循环扫描算法:磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。响应频率较为平均,但比SCAN平均寻道时间更长。

    ·C-LOOK调度算法:若磁头移动方向上没有磁道访问请求,就可立即让磁头返回,需返回到有磁道访问请求的位置即可。

    2.3 减少磁盘延迟时间方法

    1.延迟时间问题

    磁头读入一个扇区数据后需要一小段时间处理,如果逻辑上相邻的扇区在物理上也相邻,则读入几个连续的逻辑扇区,可能需要很长的“延迟时间”

    2.交替编号

    采用交替编号的策略,让逻辑上相邻的扇区在物理上有一定间隔,使读取连续扇区需要的延迟时间减小。


    3.磁盘地址结构设计

    磁盘的物理地址是(柱面号、盘面号、扇区号),无需移动磁头臂,减少磁头移动消耗时间。

    4.错位命名

    相邻盘面相对位置相同处扇区号若相同会增加延迟时间。采用错位命名可以减少延迟时间

    2.4 磁盘的管理

    1.磁盘初始化

    2.引导块

    部分初始化程序放在ROM中,不可修改;完整的初始化程序放在磁盘的启动快上,位于磁盘的固定位置。

    3.坏块处理

    扇区损坏故障无法使用。可以在逻辑格式化时对整个磁盘进行检查,并进行标记。磁盘中保留一些备用扇区,用于替换坏块。

  • 相关阅读:
    WebAssembly中simd使用调研
    【智能优化算法】基于金豺优化算法求解单目标优化问题附matlab代码
    Photoshop插件-动作相关概念-ActionList-ActionDescriptor-ActionList-动作执行加载调用删除-PS插件开发
    深入探索Sharding JDBC:分库分表的利器
    Promise面试题
    redis 缓存设计
    用 Kafka + DolphinDB 实时计算 K 线
    Pyqt组合控件与QSpacerItem指南
    【伪彩色图像处理】将灰度图像转换为彩色图像研究(Matlab代码实现)
    数据结构-顺序栈C++示例
  • 原文地址:https://blog.csdn.net/m0_49939117/article/details/128129795