操作系统之文件管理

一、一个文件内部的逻辑结构:
无结构文件和有结构文件
其中,有结构文件:文件的本质是一条条记录(定长,可变长)。

分类如下:
①顺序文件(顺序结构和串结构,文件中只有有效数据,如果是可变长记录,还需要保存每条记录的长度),
②索引文件(除了文件数据,还包括索引表。一个文件对应一个索引表,一个索引表项对应文件中的一条记录),
③索引顺序文件(除了文件数据,还包括索引表。可以采用多级索引结构,一个文件对应一个顶级索引表,最低级索引表的一个索引表项对应文件中的一条记录)
④直接文件或散列文件:由记录的键值直接给出记录的物理地址文件的记录可以离散存放,但索引表必须连续存放。但顺序文件一般物理上都是顺序存储。

二、目录:反映多个文件之间的逻辑结构(可以理解为文件夹)
目录也是一种文件,一种有结构文件,保存的不是文件的有效数据而是文件夹内所有文件的基本信息、存取控制信息和使用信息,每条记录对应一个FCB。一个文件对应一个文件控制块FCB。

目录的分类:
①单级目录结构:整个系统只有一个目录表。相当于一台计算机只有一个根目录,只能一个人用。
②两级目录结构:分为主文件目录MFD和用户文件目录UFD。主文件目录记录了用户名和用户文件目录的地址。相当于一台计算机可以给多个人用,但每个人用的时候只有一个根目录。
③多级目录结构(树形目录结构):产生了文件路径,各级目录用/隔开。路径分为绝对路径和相对路径。相当于现代计算机的形式了。
④无环图目录结构:在树形基础上,可以使用多个文件名指向物理上的同一个文件或同一个目录。需要为共享节点设置一个共享计数器,用户想要删除文件或目录时,只删除该用户的目录中对应的FCB并让共享计数器-1,只有共享计数器减为0,才在磁盘中删除该文件数据。

我们在目录中查找某个文件时是按文件名查找的,所以只需要文件名信息就可以了,找到文件名匹配的目录项之后才需要看这个文件的别的信息。所以UNIX将文件名和文件描述信息分开,文件描述信息保存在iNode结点中,即索引结点。每个目录项中,即FCB中只保存文件名和指向索引结点的指针。这样可以让一个目录块保存更多的FCB,减少磁盘IO次数。
操作系统先将目录块调入内存,在目录块中按名查找到对应文件后,再根据iNode指针将该文件的iNode结点调入内存,再根据iNode中的信息得到文件存放的物理位置,再去读文件数据。

注意:因为目录也是一个文件,所以每个目录也有一个iNode结点。用绝对路径查找文件时,先访问根目录的iNode结点,找到根目录的存放位置,在根目录中再找下一级目录或文件的iNode结点的位置。

目录的物理结构:线性表,哈希表

三、文件的物理结构:文件怎么存放在磁盘中,给文件划分磁盘块
一个文件可能需要多个磁盘块来存储。

①连续分配:每个文件在磁盘上占有一组连续的块。
②链式分配:离散分配
ⅰ 隐式链接:除了文件的最后一块,每块都会保存指向下一个物理块的指针。目录中需要记录起始块号和结束块号。
ⅱ 显式链接:FAT一个磁盘对应一张FAT表,开机时读入内存并常驻内存,FAT在物理上连续存储。FAT的每一项记录了这个物理块指向的下一个物理块的地址。操作系统先从FCB或inode结点中得到该文件的起始块号,再根据逻辑块号从起始块号开始在FAT中找到对应的物理块号,因为FAT常驻内存,所以不需要读磁盘。
③索引分配:离散分配系统为每个文件建立一张索引表,索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块。操作系统先从FCB或inode结点中得到该文件的索引块地址,将索引表读入内存,通过逻辑块号在索引表中找到相应的物理块号。
如果索引块有多个该怎么组织?
ⅰ 链接:一个索引块链接下一块。FCB中只记录起始索引块。
ⅱ 多层索引:一个文件对应一个一级索引表,一级索引表又指向低级索引表。每个索引表只占一个物理块。找二级索引表的索引块用除法,找二级索引表中对应的表项用余数。FCB中只记录一级索引块。
ⅲ 混合索引:前两种的结合。一个文件的顶级索引表中的每一项既可以直接指向一个数据块,也可以指向一个间接索引块。FCB中只记录顶级索引块。

四、文件存储空间管理:怎么管理每个磁盘块
将物理磁盘可划分为一个个文件卷(逻辑卷,逻辑盘),每个文件卷划分为目录区和文件区,目录区存放FCB或inode结点以及管理磁盘块需要的信息,文件区存放文件数据。

管理磁盘块的方法:
①空闲表法:适合连续分配方式
目录区要保存一张空闲表。
和内存管理中的动态分区分配类似。
使用一张表记录磁盘块的空闲情况,每个表项记录每个空闲区域的起始块号和空闲盘块数,回收磁盘块时要注意表项的合并。
②空闲链表法:
只需要保存链头链尾指针。
ⅰ 空闲盘块链:离散分配从链头摘下磁盘块分配,并修改链头指针;回收时依次挂在链尾,并修改链尾指针。
ⅱ 空闲盘区链:离散分配,连续分配连续的空闲盘块构成一个空闲盘区,指针将这些盘区连接起来。分配时可以找到一个合适大小的盘区分配给文件,也可以将不同盘区的盘块分配给同一个文件。回收时也要注意和空闲盘区的合并,不能合并则挂在链尾。
③位示图法:离散,连续分配目录区要保存一张位示图。每一位对应一个磁盘块,1表示已分配。盘块号与字长做除法得到字号,余数为位号。
④成组链接法适合大型文件系统,目录区用一个磁盘块作为超级块,系统启动时读入内存。

五、文件共享
①硬链接:在文件的索引结点中设置一个链接计数变量(无环图目录结构处有解释)
②软链接:相当于快捷方式。新建了一个文件,文件中保存了目标文件的存放路径。

六、文件保护
①口令保护
②加密保护
③访问控制:可以单独为每个人设置权限,也可以以组为单位设置权限。

七、文件系统的层次结构
按从上到下的顺序
①用户接口:提供功能接口
②文件目录系统:找到相应的FCB和索引结点
③存取控制模块:保证安全和检查权限
④逻辑文件系统与文件信息缓冲区:将用户提供的文件记录号转化为逻辑地址
⑤物理文件系统:把逻辑地址转化为物理地址
⑥辅助分配模块:负责文件存储空间的管理
设备管理模块:直接与硬件交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值