评定等级
操作系统课程设计 文件系统管理
学 院 计算机学院 专 业 计算机科学与技术 班 级 姓 名 学 号
2013年1月8日
广东工业大学计算机学院制
文件系统管理
一、实验目的
模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。
二、实验内容和要求
编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括:
1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结
三、可行性分析
1、技术可行性
对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性
课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益)
3.法律可行性
自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。
四、需求分析
编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索
五、概要设计
为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录的指针。
本设计主要实现下面几个数据结构:
M D F 用户名 文件目录指针 用户名 文件目录指针 U F D 文件名 保护码 文件长度 A F D 打开文件名 打开保护码 读写指针 文件名 · · ·
总体的流程图如下:
六、详细设计
主要数据结构:
1.MFD(Master File Directory),主要用以存放用户,可以增加存放密码的字符数组,本设计没有保密安全方面的忧虑,为了使用时操作更简单省去密码。所以,MFD结构仅包括用户名和指向子目录的一个指针,以及指向下一用户的连接点,为线性结构。 struct MFD {
char name[20]; //用户名
UFD *bst_pointer; //文件目录指针 MFD *link; };
2. UFD(User File Directory),用于存放文件的数据结构。由于本设计为了加快检索速度,使用了二叉排序树的结构,所以UFD结构中相应加入了用于树结构的parent,leftchild,和rightchild记录链接情况。
当本文件为普通文件时,为下级记录申请AFD(file),folder为空。同样,当本文件为文件夹时,为它申请相应的空间,AFD为空。以此来达到无穷级别目录的存储。 struct UFD {
UFD *parent; UFD *leftchild; UFD *rightchild;
UFD *folder; //作为文件夹时指向下一层,文件时为空 UFD *pre_folder; //指向上一层目录(文件夹时用到) AFD *file; //作文文件时文件的具体内容 char name[30]; //文件(夹)名字
int length; //作为文件时文件的长度,默认为0 char rw; //读写标志r or w char share; //共享标志y or n
char file_folder; //指示此文件是文件或文件夹,f为文件,o为文件夹 };
3.AFD,存放文件的内容的结构,比较简单,文件内容用一个字符数组存储,为顺序结构,最多可存放99个字符 struct AFD {
char afd_file[100];
int read; //读指针 int write; //写指针 };
4.REC
struct REC //UFD的线性链,用于记录共享文件和已打开文件 {
UFD *file;