操作系统学习第四章文件管理

操作系统学习第四章文件管理

第四章文件管理

一、文件逻辑结构

按照逻辑结构,文件可划分为:无结构文件、有结构文件

1.无结构文件

无结构文件:文件内部的数据是一系列二进制流或字符流组成。又称“流式文件”。

2.有结构文件

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

如:数据库表文件,每条记录有一个数据项可作为关键字。根据记录长度是否相等,可分为定长记录和可变长记录。

有结构文件按记录的组织形式可分为:顺序文件、索引文件、索引顺序文件

(1)顺序文件

顺序文件:文件中的记录一个接一个地顺序排列,记录可以是定长的也可以是可变长的。

各记录在物理上可以是顺序存储或链式存储。

一般顺序文件指的是物理上顺序存储的顺序文件。

顺序文件按照是否与关键字有关分为:

①串结构:记录之间的顺序与关键字无关,通常按照记录存入的时间决定记录的顺序

②顺序结构:记录之间的顺序按照关键字排序。

注:只有定长记录的顺序存储,才可实现随机存取。

(2)索引文件

索引文件:建立一张索引表,为每个主文件的记录在索引表中分别设置一个表项,包含索引号、长度、指针(逻辑起始地址)。索引表本身是定长记录的顺序文件,可以快速找到第i个记录对应的索引项。可以将关键字作为索引号内容。每当增加/删除记录时,需要对索引表进行修改。索引表具有很快的检索速度,因此主要用于信息处理的及时性要求较高的场合。

(3)索引顺序文件

索引顺序文件:是顺序文件和索引文件相结合。建立一张索引表,一组记录对应一个索引表项。

为了进一步提高检索效率,当记录过多时,可以建立多级索引文件。

二、文件目录

文件目录即是操作系统的“文件夹”。

目录本身就是一种结构文件,由一条条记录组成。文件中一条记录就是一个**“文件控制块(FCB)”**。

FCB实现了文件名和文件之间的映射,使用户可实现“按名存取”。FCB包含了文件的:

基本信息:文件名、物理地址、逻辑地址、物理结构等

存取控制信息:是否可读/可写、禁止访问的用户名单等

使用信息:文件的建立时间、修改时间等

2.1目录结构—单级目录结构

早期操作系统整个系统重只建立一张目录表,每个文件占一个目录项。实现了“按名存取”,但是不允许文件重名。在检查一个文件时,需要检查目录表中有没有重名文件。单级目录结构不适用于多用户操作系统。

2.2目录结构—两级目录结构

早期多用户操作系统,采用两级目录结构。分为主文件目录和用户文件目录。不同用户的文件允许重名。文件名虽然相同,但是对应的其实是不同文件。也可以在目录上实现访问限制。

2.3目录结构—多级目录结构

多级目录结构又称树形目录结构。用户要访问某个文件时要用文件路径名标识文件,各级目录之间用“ / ” 隔开。从根目录出发的路径称为“绝对路径”。从当前目录出发的路径称为“相对路径”。相对路径检索文件可以减少磁盘I/O次数。树形目录结构可以很方便对文件进行分类,层次结构清晰,有效地进行文件管理和保护。但不便于实现文件共享。

2.4目录结构—无环图目录结构

无向图目录结构:在树形目录结构的基础上,增加一些指向同一节点的有向边。可以方便实现多用户之间文件共享。可以用不同的文件名指向同一个文件,甚至可以指向同一个目录。需要为每个共享结点设置一个共享计数器,记录此时有多少个地方在共享该结点。用户提出删除结点请求时,只删除用户的FCB,并使共享计数器减1,不会直接删除共享结点,当共享计数器为0时才删除。

注:共享文件不同于复制文件,在共享文件中,由于用户指向的是同一个文件,只要一个用户修改了数据,那么都会看到文件数据的变化。

2.5索引结点(FCB的改进)

在查找各级目录的过程只需要用到“文件名”,因此通过引用索引结点来保存除文件名外的文件描述信息。

当找到文件名对应目录项时,才需要将索引结点调入内存。索引结点中记录了文件的各种信息,包括文件在外存的存储位置。存放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为”内存索引结点“。因此,内存索引结点中需要增加一些信息。如:文件是否被修改、此时有几个进程正在访问该文件等。

三、文件的物理结构

操作系统需要对磁盘块进行管理:对非空闲磁盘块的管理(存放文件数据的磁盘块)、对空闲磁盘块的管理(文件存储空间管理)

文件分配方式有:连续分配、链接分配、索引分配

为了方便文件数据管理,文件的逻辑地址空间也被分为了一个个的文件块。

3.1连续分配

连续分配:要求每个文件在磁盘上占有一组连续的块

用户给出要访问的逻辑块号,物理块号=起始块号+逻辑块号。连续分配方式支持顺序访问和直接访问(随机访问)。在读取某个磁盘块时,需要移动磁头。访问两个磁盘块相隔越远,移动磁头所需时间就越长。所以连续分配文件在顺序读/写时速度最快。物理上采用连续分配的文件不方便拓展。并且存储空间利用率低,会产生难以利用得磁盘碎片。

3.2链接分配(隐式链接)

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

采用链接分配(隐式链接)方式,只支持顺序访问,不支持随机访问,查找效率低。采用链接分配(隐式链接)方便文件拓展,不会有碎片问题,外存利用率高。

3.3链接分配(显示链接)

用于链接文件的各物理块的指针显式地放在一张表中。也就是文件分配表(FAT)。

逻辑块号转成物理块号过程不需要读取磁盘操作。所以比隐式链接访问速度快。采用显式链接方式,支持顺序访问,也支持随机访问。不产生外部碎片。

四、文件存储空间管理

4.1空闲表法

空闲表法:用一个空闲盘块表来记录空闲的盘块。适用于连续分配方式。

分配和回收磁盘块:与内存管理中动态分区分配类似。

4.2空闲链表法

空闲链表法分为:空闲盘块链、空闲盘区链。

①空闲盘块连

操作系统保存着链头、链尾指针。分配:从联投开始一次摘下K个盘块分配,并修改空闲链的链头指针。回收:回收盘块一次挂到链尾,并修改空闲链的链尾指针。适用于离散分配的物理结构。

②空闲盘区链

操作系统保存着链头、链尾指针。

分配:按照一个算法规则,从链头开始检索找到合适的磁盘区分配给文件。

若没有合适的文件,可以把不同盘区的盘块同时分配给一个文件。分配后修改相应的链指针。

回收:若回收和某个空闲盘区相邻,将回收区合并到空闲盘区中。

若没有和空闲盘区响铃,将回收期作为单独的空闲盘区挂到链尾。

离散分配、连续分配都适用。为一个文件分配多个盘块效率高。

4.3位实图法

每个二进制位对应一个盘块,位示图一般用于连续“字”来表示,如下例是一个字的字长为16位,字中每一位对应一个盘块。”0“表示空闲,“1”表示已分配。

分配:顺序扫描位示图,找到相应的空闲空间分配给文件,并置为“1”表示已分配回收:根据回收盘块好计算出相应的位置,置“0”。连续分配、离散分配都适用。

4.4成组链接法

空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。

UNIX系统采用了成组链接法队磁盘空闲块进行管理:

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

超级块:记录了下一组空闲盘块的数量,还有空闲块号。

五、文件的基本操作

操作系统为文件提供功能:创建文件create、删除文件delete、读文件read、写文件write、打开文件open、关闭文件close。

注:读/写操作之前需要打开文件,读/写操作结束需要关闭文件。

5.1创建文件

需要参数:所需外存空间大小、文件存放路径、文件名操作系统主要工作:在外存中找到文件所需的空间、创建该文件对应的目录项。

5.2删除文件

需要参数:文件存放路径、文件名操作系统主要工作:找到文件名对应的目录项、回收文件占用磁盘块、删除文件对应目录项

5.3打开文件

需要参数:文件存放路径、文件名、文件操作类型

操作系统主要工作:找到文件名对应的目录项、将目录项复制到内存中的“打开文件表”,并将编号返回给用户,用户使用打开文件表编号来指明要操作的文件。

在系统打开文件表中,有一个打开计数器,记录此时有多少个进程打开了此文件。

5.4关闭文件

进程使用完文件之后关闭文件,操作系统主要工作:

①将进程打开文件表相应表项删除

②回收分配的内存资源

③文件表打开计数器count减1,若count=0,删除对应表项

5.4读文件

操作系统主要工作:使用read系统调用完成读操作,从指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中。

5.4写文件

操作系统主要工作:使用write系统调用完成写操作,从用户指定的内存区域中,将指定大小数据写回写指针指向的外存。

六、文件共享

操作系统为用户提供共享功能,可以让多个用户共享地使用同一个文件。文件共享方式:基于索引结点的共享方式(硬链接)、基于符号链接的共享方式(软连接)

注:共享:多个用户共享一个文件,意味着系统中只有一份文件数据。在某个用户修改时,其他用户也看到变化。

​ 复制:若每个用户都复制了同一个文件,系统中会有好几份文件数据。某个用户修改自己那份数据时,其他用户没影响。

6.1基于索引结点的共享方式

这种共享方式以多个文件目录链接到该索引结点上。

若某个用户决定“删除”文件,只是把用户目录中与该文件对应目录项删除,且索引结点的count减1。若count>0,还有其他用户在使用文件,不能把文件数据删除。若count=0,系统负责删除文件。

6.2基于符号链接的共享方式

这种共享方式,新建了一个Link类型文件,记录了目标文件的存放路径。类似于Windows操作系统的“快捷方式”。若目标文件删除,操作系统已经找不到此路径下的文件,所以这个路径失效了。

七、文件保护

操作系统为了保护文件数据的安全,有:口令保护、加密保护、访问控制

7.1口令保护

为文件设置一个口令,用户请求访问该文件时必须提供“口令”。口令一般存放在FCB中或者索引结点中,用户访问文件前需要先输入口令。优点:保存口令的空间开销不多,验证口令的开销时间也很小。缺点:正确的口令存放在系统内部,所以不够安全。

7.2加密保护

使用某个密码对文件进行加密,访问文件时需要提供正确的密码才能对文件进行正确的解密。优点:保密性强,不需要在系统中存储密码缺点:编码/译码,也就是加密/解密需要花费一定时间。

7.3访问控制

在文件的FCB中增加一个访问控制表,该表中记录了各个用户可以对文件执行的操作。访问类型:读、写、执行、添加、删除、列表清单(列出文件名和文件属性)。优点:实现灵活,可以实现复杂的文件保护功能。

八、文件系统层次结构

1.用户接口:用户需要通过操作系统提供接口发出请求

2.文件目录系统:由于用户提供的是文件的存放路径,因此操作系统需要一层一层查找目录找到对应目录项

3.存储控制模块:不同用户对文件有不同操作权限,为了保证安全,需要检查用户的权限

4.逻辑文件系统与文件信息缓冲区:验证了用户的访问权限后,需要把用户提供记录号转变为逻辑地址

5.物理文件系统:有了逻辑地址还需要转为物理地址

6.设备管理程序模块:要删除一条记录,需要磁盘设备发出请求

7.辅助分配模块:删除记录后,需要将空闲盘块进行回收。

八、文件系统层次结构

[外链图片转存中…(img-NOAGGBl9-1695460500972)]

1.用户接口:用户需要通过操作系统提供接口发出请求

2.文件目录系统:由于用户提供的是文件的存放路径,因此操作系统需要一层一层查找目录找到对应目录项

3.存储控制模块:不同用户对文件有不同操作权限,为了保证安全,需要检查用户的权限

4.逻辑文件系统与文件信息缓冲区:验证了用户的访问权限后,需要把用户提供记录号转变为逻辑地址

5.物理文件系统:有了逻辑地址还需要转为物理地址

6.设备管理程序模块:要删除一条记录,需要磁盘设备发出请求

7.辅助分配模块:删除记录后,需要将空闲盘块进行回收。

参考书籍:计算机操作系统(第四版)——汤小丹;王道操作系统复习指导 参考视频:王道计算机考研操作系统

相关推荐

如何配置iis使其支持php,iiS PHP,让iiS支持php语言,iiS下配置php运行环境教程图解
关于小胖丁
365bet注册网址

关于小胖丁

📅 07-12 👁️ 895
绝对求生职业选手boss是哪个战队的
365bet注册网址

绝对求生职业选手boss是哪个战队的

📅 07-07 👁️ 1896