文件系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件系统

一、实验目的

文件系统是操作系统中用来存储和管理信息的机构,具有按名存取的功能,不仅方便用户的使用,而且能提高系统效率和保证信息的安全可靠。模拟文件系统实现的基本功能,了解文件系统的基本结构和文件的各种操作方法。

不同文件系统提供不同的文件物理结构。常用的物理结构有连续文件、链接文件、索引文件等。通过实验,深入理解文件的物理结构与存取方法之间的关系,以便更好地掌握文件系统的概念。

二、实验内容

1. 采用二级目录结构实现对磁盘文件的管理

文件系统向用户提供了一整套的文件操作调用命令。用户在程序中通过使用创建、打开、读、写、关闭、删除等命令,来操作文件。

假定文件采用的物理结构为连续结构,编写模拟一个简单的文件系统程序,实现对文件的各种管理和控制功能。

(1)采用二级目录结构时,第一级为主文件目录(MFD),第二级为用户文件目录(UFD),如图1所示。

(b)用户目录MFD

图1 二级文件目录结构

在用户文件目录中,每一个文件占有其中的一项。其中,在文件保护方式中,1表示文件可读,2表示文件可写,3表示文件可读写执行。

(2)为了加速文件的存取,系统为每个用户建立一张用户打开文件表(UOF),用以记录用户当前正在使用的文件。假定最多允许打开4个文件,该表应设置4项。当打开文件个数超过4个时,应给出错误信息。为此应设置一个用户打开文件计数器C,以控制文件的打开个数。计数器C初始化为0。用户打开文件表(UOF)的结构如图2所示。

图2 用户打开文件表(UOF)

在图2中,“文件操作方式”是指文件打开后要执行的操作,“状态”指用户打开文件表的各个表项为空表目或被占用。读写指针用来指出对文件的存取位置。初始状态下,读指针=1,写指针=文件长度(追加写)。

用户建立或打开一个文件时,将指定文件的说明信息登记在用户打开文件表中,其中为了给创建的文件分配磁盘空间,引入一个计数器C1,用它来模拟磁盘的使用情况,初始化为10(即从第10块开始分配)。假定一个磁盘块大小为64个字节。

(3)假定该文件系统提供了6条命令:创建、打开、读、写、关闭、删除等。当要创建文件并向文件中保存一些信息时,用户程序应使用create、write、close等3条命令来实现;当要读文件时,应使用open、read、close等3个操作命令。

在模拟实验中,应先建立主文件目录、用户文件目录和用户打开文件表,然后给出一个菜单,请求用户选择要执行的操作。

(4)假定创建一个连续文件,当用户要在磁盘上建立一个文件时,首先使用如下命令,向系统提出创建文件的请求:

fd= create(文件名,文件最大字节长度,文件保护方式);

由文件最大长度计算出文件应占用的磁盘块数,然后模拟磁盘空间的分配程序为文件分配空间,并登记在用户文件目录表中,再返回文件描述符。

(5)写文件命令的格式如下:

write(文件描述符,要写的字节个数);

(6)打开文件命令的格式如下:

fd= open(文件描述符,操作方式);

(7)读文件命令的格式如下:

read(文件描述符,要读的字节个数);

(8)关闭文件命令的格式如下:

close(文件描述符);

(9)删除文件命令的格式如下:

delete(文件名);

2. 模拟设计MS-DOS操作系统中磁盘文件的存储结构

(1)MS-DOS文件系统对磁盘文件的管理采用链接结构。链接文件所在的第一个物理块号登记在文件目录中,其他各块的链接指针存放在文件分配表(FAT)中。FAT表中的各项共有三种状态:0表示空闲,-1为文件的结束标志,非0是链接指针。当要为文件分配空间时,从FAT表中寻找其值为0的项,并把文件占用的各物理块通过链接指针登记在FAT表中,再把文件的第一个物理块号和文件占用的块数登记在文件目录表中。

(2)文件目录表及FAT表的格式如图3所示。

文件目录表文件分配表(FAT表)

图3 文件目录表和FAT表

假定磁盘上共有N个物理块可供使用,FAT表共有N项。FAT表的前两项也即第000项和第001项用来记录磁盘的管理信息,如磁盘类型等。第002项开始记录磁盘各块的使用情况。系统目前共有两个文件A和B,各个文件占用的磁盘块通过FAT表就可以找到。在FAT表中第003项为0,表示对应的第三块空闲。由图3还可以知道文件A的各块依次存放在第2、4、15、16块等4个物理块中。第16块中的指针为FFF,表示文件A结束。文件B的各块依次存放在第7、10块

等2个块中。第10块中的指针为FFF。

(3)假定磁盘存储空间共有100个物理块。为了简单,文件分配表可用一个数组定义,其中每一个元素与一个物理块对应。当第i个元素为0时,表示第i 块空闲;当第i个元素既不为0也不为FFF时,其值表示某文件占用的一个物理块号。另外再设一个空闲块总数变量记录系统当前还有的空闲块数。

(4)为简单起见,假定一个物理块只存放文件的一个逻辑记录,要求设计一个模拟程序,当用户要求将已在主存的文件保存在磁盘上时,给出文件名及文件的记录个数,系统应能在磁盘上正确地保存文件。或当用户要求给指定文件增加记录时,也应正确地实现,并插在指定记录之后。

(5)为了正确地执行模拟程序,可用键盘模拟输入用户的要求,输入格式为:

write(文件名,逻辑记录号)

insert(文件名,逻辑记录号)

对于写文件记录,可认为是覆盖写。但当指定记录不存在时,就出错。对于新创建的文件写或续写,应该采用插入写。对于插入,先分配一个磁盘块,再写。一般认为在指定记录之后插入。

相关文档
最新文档