进程调度 作业调度 主存空间的分配与回收 文件系统 下载本文

学号: 姓名: 协作者:________

实验__四 _题目_ 文件系统 _第 周星期

一、实验目的

模拟文件系统实现的基本功能,了解文件系统的基本结构和文件的各种管理方法,加深理解文件系统的内部功能及内部实现。通过用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

二、实验内容和要求

编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。要求本文件系统采用两级目录,即设置主文件目录[MFD]和用户文件目录[UED]。另外,为打开文件设置运行文件目录[AFD]。设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件,并对文件必须设置保护措施。在用户程序中通过使用文件系统提供的Create、open、read、write、close、delete等文件命令,对文件进行操作。

三、实验主要仪器设备和材料

实验环境

硬件环境:个人台式机 Microsoft Windows XP Professional (SP3) 软件环境:C语言编程环境,VC6.0

四、实验设计方案及原理

1、实验原理

因为系统小,对文件目录检索使用简单的线性搜索,为了便于实现,对文件读写做了简化,在执行读写命令时,只修改读写指针,并不实际对文件进行操作,其中初始状态下,读指针=0,写指针=文件长度,文件保护码使用三位保护码:1:表示文件允许的读 2:表示文件可写 3.表示文件可执行,创建文件时通过模拟磁盘的使用情况来实现。

49

2、设计方案

程序采用两级目录结构,第一级威设置主文件目录[MFD],第二级为用户文件目录[UFD],另外为打开文件设置运行目录[AFD]

struct mdf{ /* 第一级:主目录 MDF */ char name[10]; /* 用户名 */

UFD* directory; /* 文件目录指针 */ }maindir[10]; /* 用户数组 */ typedef struct mdf MDF;

struct ufd{ /* 第二级:用户文件目录 UFD */ char filename[10]; /* 文件名 */

char procode[3]; /* 保护码 1:读 2:写 3:执行*/ int length; /* 文件长度 */ }*p;

typedef struct ufd UFD;

struct afd{ /* 文件运行目录 */ char filename[10]; /* 文件名 */

char procode[3]; /* 保护码 1:读 2:写 3:执行*/

int rw; /* 读写指针 初始状态读:0 写:文件长度 */ }afd[5];

系统提供8条命令:create delete open close read write display quit,可以提供创建、删除、打开、关闭、读入、写出、显示、退出等功能。

①、Create—在用户当前目录下创建一个文件,该文件的管理信息登录到用户文件信息

管理模块中。

命令格式:create

②、delete—删除当前用户目录下的一个文件,删除后文件无法打开。

命令格式:delete

③、open—在当前用户目录打开某个文件并修改标志位,对文件各种操作都需先打开。 命令格式:open

④、close—关闭用户运行的文件。执行该命令后,用户在系统中运行文件状态位被修

改为关闭。

命令格式:close

⑤、read—从用户已打开文件读信息,将文件信息读入并修改读取标志位,未打开文件

无法读取。

命令格式:read

⑥、write-向用户已打开文件写入信息,修改标志位,未打开文件无法写出操作。

命令格式:write ⑦、 display用户目录文件列表显示。

命令格式:display

⑧、quit用户注销命令。当使用该命令时,用户退出系统。

命令格式: quit

50