操作系统文件管理

本文详细探讨了操作系统中的文件概念,涉及文件属性、逻辑结构(无结构和有结构,顺序与索引)、物理结构(连续、链接和索引分配),以及文件管理功能如创建、删除、共享、保护和访问控制,强调了无环图目录结构和多种空间管理方法的应用。
摘要由CSDN通过智能技术生成

概念

文件是一组有意义的新信息/数据集合,操作系统提供的文件管理功能应该包括:定义文件属性、解决文件内部和文件之间的组织问题。

文件属性由文件名、标识符(文件在不同路径下可能有相同的文件名,但对操作系统来说每个文件都只有唯一的标识符)、文件类型、文件位置、文件大小、创建时间、上次修改时间、文件所有者信息和保护信息。

文件内部组织形式有无结构文件,如文本文件、流式文件;和有结构文件,如excel和数据库这种由记录和数据项构成的文件。

文件之间的组织形式一般通过根目录—目录—文件的结构组织,目录或者文件夹本身也是一种特殊的有结构文件。

文件管理向上提供的功能有:创建,读写,删除,打开和关闭。
向下提供存储的具体方法,将外存分成大小相等的块,采取连续或者离散加记录的方式分配,以及空闲磁盘块的管理。

以及其他功能,比如文件共享和文件保护等。

文件的逻辑结构

即用户看来文件内部数据的组织形式,具体分类如下:

无结构文件

由二进制或字符组成,如txt和流式文件

有结构文件

又称记录式文件,每条记录有一个数据作为关键字,记录有分为定长和可变长记录;根据逻辑结构可以分为顺序文件和串结构,二者区别在于记录顺序与关键字是否有关,顺序是记录按关键字顺序进行排序,而串结构记录之间的顺序与关键字无关。

顺序文件是指记录一个接一个的顺序排列,可连续的顺序排列或形成链式,对用户来说感受一致,区别在于物理上是否相邻。
顺序的可变长记录无法随机存取,定长的可实现,但增删记录困难,链式可变长查找记录只能一个个向下,查询效率慢。

索引文件

解决可变长记录查找速度慢的问题,索引是定长记录的顺序文件,增删记录需要修改索引表用于比对信息,该结构适用于对及时性要求较高的场合。

索引顺序文件

文件多时索引表可能很大,降低了磁盘利用率,该结构将一组记录对应一个索引表项,先对记录进行分组再加索引,当记录多检索速度慢时可建立多级索引表。

文件目录

目录本身就是一种有结构文件,存储在文件控制块FCB中,FCB中包含文件的基本信息,其中最重要的就是文件名和文件存放的物理地址,操作系统由目录找到对应的物理地址,操作系统借助该文件实现搜索、创建文件、删除文件、显示目录和修改目录功能。

目录结构

单级目录结构

只建立一张目录表,不允许文件重名,无法实现多用户操作。

两级目结构

主文件目录MFD:记录用户名及相应用户文件目录存放的位置。
用户文件目录UFD:用户文件FCB。

允许不同用户文件充满,可以实现访问控制,但缺乏灵活性,用户无法对自己目录下的文件进行分类。

多级目录结构

用户用文件路径名标识文件,各级目录用/隔开,不同目录下的文件可以重名。

根目录出发的是绝对路径,操作系统逐层找下一级,外存读入目录时找下一级目录的存放位置,根据局部性原理,用户也往往会访问同目录下的多个文件,每次都从根目录出发会增大系统查找开销,故设置当前目录作为相对路径,可以减少访存次数。

该结构分类方便,层次清晰,但不便于实现文件共享。

无环图目录结构

在多级目录基础上,增加一个用户指向节点的有向边,使整个目录成为一个有向无环图,方便多用户间的文件共享,操作系统为文件设置共享计数器,用户删除文件时减一并删除用户FCB,当计数器为0时才删除文件,一方的修改对双方均可见。

索引节点FCB的改进

用户在查找时只需要文件名即可,其他信息放入索引节点,可以减少目录表大小。

文件物理结构

文件的物理存储方式,对用户透明,由操作系统完成,实现逻辑和物理地址的对应转换。

磁盘也分块管理,大小与内存卡和页面大小相同,文件的逻辑地址也分为块,逻辑地址=逻辑块号+块内地址。

连续分配

每个文件在磁盘上占有一个连续的块,操作系统进行地址转换时要检查逻辑块号是否合法,目录中只需记录块号和块内地址。

该方法支持顺序访问和随机访问,磁盘顺序读,磁头移动距离短,速度更快;但不方便扩展,新增数据需要迁移,且空间利用率低,容易产生磁盘碎片。

链接分配

为文件分配离散的磁盘块,具体可分为隐式链接和显式链接:
隐式链接是只记录起始块号和结束块号,每个块保存指向下一个盘块的指针,支持顺序读取,不支持随机读取,指向下一个盘块的指针需要占用空间,方便扩展但不产生碎片。

显式链接是将用于链接文件各物理块的指针显式存放在一张表中,即文件分配表FAT。
一个磁盘仅设置一张FAT,开机时读入内存并常驻,逻辑地址到物理地址的转换不需要磁盘操作,只需读取FAT的记录找到对应FCB即可,可以顺序读取也可以随机读取,方便扩展,但文件分配表需要占用一定存储空间。

索引分配

FAT整个磁盘一张表,索引分配是将FAT进行离散分配,为每个文件建立一张索引表,记录文件逻辑块对应的物理块,目录中记录索引,找到索引表即可实现地址转换。

支持随机访问,方便扩展,一个磁盘块装不下索引表时又如何解决呢?

链接法,将多个索引块链接存放,不能随机访问,查找低效。

多层索引,类似多级页表,底层指向高层,各层索引表大小不能超过一个磁盘块,文件小时仍采用多级索引会增加访存开销。

混合索引,既包含直接地址索引直接指向数据块,又包含一级间接索引指向单层索引表,还包含两级索引,可以灵活根据文件大小取用。

文件存储空间管理

该部分实现存储空间的划分与初始化功能,即将物理磁盘划分为文件卷,文件卷又划分为目录区和文件区,管理方法如下:

空闲表法

由第一个空闲盘块号和块数组成,用于连续分配方式,分配时可用首次适应,最佳适应,最坏适应等方法,回收需注意表项的合并问题。

空闲链表法

将空闲盘块组成一条空闲链,连续空闲盘块组成一个空闲盘区,第一个盘块记录盘区长度及下一个盘区的指针。

操作系统保存链头链尾的指针,分配时修改链头链尾,适用于离散分配,可用首次适应,最佳适应算法找到大小合适的空闲盘区;没有连续空闲块时将不同盘区的盘块分配给一个文件,修改相应指针和盘区大小等数据,回收时合并空闲分区,离散连续都适用,为一个文件分配多个盘块的效率较高。

位示图法

用表对应盘块,由字号和位号组成,类似二维数组,数值0表示空闲,1表示已分配,数量次序为盘块号,b=ni+j,分配时顺序扫描,找数值为0的未分配盘块,计算出盘块号并分配,将数值置为1;回收时计算字号位号,对应数值设置为0,连续和离散分配都适用。

成组链接法

在unix中适用的适用于大型文件系统的管理方法,文件卷目录区中专门用一个磁盘块作为超级块,系统启动时中读入内存,时刻保持内外一致,超级块记录下一组空闲盘块数和空闲块号。

分配时若一个分组足够则将分组中的空闲块分配并修改分组,将下一分组的信息复制到超级块中。
回收时空闲盘块号加1,若空闲盘块已满则复制内容到新块中,修改超级块的内容,让回收的块成为第一个分组及超级块。

文件基本操作

创建文件,create系统调用,需要的参数有所需的外存空间大小、文件存放路径和文件名,操作系统首先在外存中找到存储文件所需的空间,再找到对应目录文件创建目录项。
删除文件,delete系统调用
打开文件,open系统调用
关闭文件,close系统调用
读文件,read系统调用
写文件,write系统调用

文件共享

实现多个用户共享一个文件,系统中只有一份数据,用户修改该文件时其他用户均可见。

基于索引结点的共享方式—硬链接

不同用户的目录项指向同一个索引结点,一个用户删除断链接,索引结点计数器减一。

符号链的共享方式—软链接

创建link共享文件,类似快捷方式,用户访问时由link文件查找目的文件的位置,源文件删除则软连接失效。

文件保护

口令保护

为文件设置口令,用户请求访问时需要提供口令,口令一般存在FCB或索引节点中,保存口令和验证口令的开销较小,但口令存放在系统内部不安全。

加密保护

适用密码加密文件,用户访问时先解密才能读取。该方法保密性强,不需要在系统中存储密码,但加解密有时间开销。

访问控制

每个文件的FCB或索引节点增加一个访问控制表ACL,用于记录各用户可对文件进行的操作,如读写,执行,添加,删除,列表清单功能,但当用户多时记录复杂也有空间开销。

精简的访问表,以组为单位标记用户可以对用户执行的操作,用户检查用户所属的分组,该方法实现灵活,可以实现复杂的文件保护功能。

总结

该章学习了操作系统对文件的管理方法,对用户来说文件有无结构和有结构两种形式,文件的逻辑结构有顺序和索引两种方法;文件存储的位置由目录表记录,为了实现用户对自己文件的灵活管理和多用户共享文件,目前适用的是无环图目录结构,即文件多级目录用下划线/区分,不同用户与文件的关系逻辑上表现为一条边;操作系统对文件的物理存储有连续、链接和索引三种方法;空闲分区的管理有主要空闲表和位示图,是顺序存储空闲分区和用二位列表记录此磁盘块适用状态的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值