操作系统实验三__文件管理.docVIP

  • 21
  • 0
  • 约1.7万字
  • 约 35页
  • 2017-03-07 发布于湖北
  • 举报
操作系统实验三__文件管理

《计算机操作系统课程实验报告 ? 题目 学 院: 学院? 专 业: 姓名 班级 学号 ? 201年 月日 编写一个简单的二级文件系统实现程序,加深对文件系统的内部功能和内部 实现的理解。要求模拟采用二级目录结构的磁盘文件系统的文件操作能实现相应的命令,用输入命令来模拟用户程序中调用的文件操作。 2.实验内容: 最基本的文件操作 (1)创建文件 在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。目录项中应该记录新文件的文件名及其在外存的地址等属性。 (2)删除文件 当已不再需要某文件时,可将它从文件系统中删除。在删除时,系统应该先从目录中找到要删除的文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。 (3)读文件 在读一个文件时,须在相应的系统调用中给出文件名和应该读入的内存目标地址。此时,系统同样要查找目录,找到制定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。 (4)写文件 在写一个文件时,须在相应的系统调用中给出该文件名及该文件在内存中的(源)地址。为此,也同样须先查找目录,找到指定文件的目录项,在利用目录中的写指针进行写操作。 (5)截断文件 如果一个文件的内容已经陈旧而需要全部更新文件的内容时,一种方法是将此文件删除,再重新创建一个新文件。但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文件的长度设置为0,或说放弃原有的文件内容。 (6)设置文件的读/写位置 前述的文件读/写操作,都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。也正因如此,才能改顺序存取为随机存取。 3.设计实现: 1)流程图 2)详细设计 源代码 #include stdio.h #include string.h #include conio.h #include stdlib.h #include time.h #define MaxUser 100 //定义最多有100个用户 #define MaxDisk 512*1024 //定义磁盘空间大小 #define commandAmount //对文件操作的指令数 //存储空间管理有关结构体和变量 char disk[MaxDisk];// 模拟512K的磁盘存储空间 typedef struct distTable //磁盘块结构体 { int maxlength; int start; int useFlag; distTable *next; }diskNode; diskNode *diskHead; typedef struct fileTable //文件快结构体 { char fileName[10]; int start; //文件在磁盘存储空间的起始地址 int length; //文件内容长度 int maxlength;//文件的最大长度 char fileKind[3];//文件的属性--读写方式 struct tm *timeinfo; bool openFlag;//判断是否有进程打开了文件 }; int used = 0;// 定义 MFD 目录中用已有的用户数 //两级目录结构体 typedef struct user_file_directory //用户文件目录文件 UFD { fileTable *file; user_file_directory *next; }UFD; typedef struct master_file_directory //主目录文件 { char userName[10]; char password[10]; UFD *user; }MFD; MFD userTable[MaxUser]; int userID = -1; //用户登录的 ID 号,值为-1 时表示没有用户登录 //文件管理 void fileCreate(); //创建文件 void fileDelet(); //删除文件 void fileWrite(); //写文件 void fileRead();//读文件 void fileRename(); //重命名文件 void fileFind(); //查询文件 void fileDir();// 显示某一用户所有文件 void fileClose(); //关闭已打开的文件 void fileChan

文档评论(0)

1亿VIP精品文档

相关文档