学号: 姓名: 协作者:________
实验__四 _题目_ 文件系统 _第 周星期
一、实验目的
模拟文件系统实现的基本功能,了解文件系统的基本结构和文件的各种管理方法,加深理解文件系统的内部功能及内部实现。通过用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
二、实验内容和要求
编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。要求本文件系统采用两级目录,即设置主文件目录[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