资源描述:
《实验六模拟文件系统.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统试验班级:计科0801姓名:韩伟伟学号:08407106日期:2011/6/15实验六模拟实现文件系统一.实验目的通过模拟程序实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能,了解文件系统实现的特点,掌握文件系统的各种功能实现方法。二.实验属性设计三.实验内容模拟实现文件系统问题是一个经典的关于文件的处理问题,包括:实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能。设计思想如下:1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。2.文件物理结构可采用显式链接或其他方法。3.磁盘空闲空间的管理可选择位示
2、图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login(用户登录)(2)系统初始化(建文件卷、提供登录模块)(3)文件的创建:create(4)文件的打开:open(5)文件的读:read(6)文件的写:write(7)文件关闭:c
3、lose(8)删除文件:delete(9)列出文件目录:dir(10)退出:logout四.设计思路1.本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。2.系统使用create,open,read,write,close,delete,dir和exit来创建文件,打开文件,读文件,写文件,关闭文件,删除文件和显示文件。3.程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。4.为了便于实现,对文件的读写作了简
4、化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。模拟实现文件系统的主要流程图如下:五.实验报告1.写出你编写的C++程序。#include"stdio.h"#include#include#include#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0#defineUserNumber10#defineUserFNumber10#defineUserOFNumber5structfname{charfnamea[1];intf
5、lag;}fnameA[26]={'a',0,'b',0,'c',0,'d',0,'e',0,'f',0,'g',0,'h',0,'i',0,'j',0,'k',0,'l',0,'m',0,'n',0,'o',0,'p',0,'q',0,'r',0,'s',0,'t',0,'u',0,'v',0,'w',0,'x',0,'y',0,'z',0};structafd{charopname[10];/*打开文件名*/intflag;charopfprotect[3];/*打开保护码*/intrwpoint;/*读写指针*/}AFD[UserOFNumber];/*用户
6、打开的文件*/typedefstruct{charfname[10];/*用户文件名*/intflag;/*文件存在标志*/intfprotect[3];/*文件保护码rwt*/intflength;}ufd,UF[UserFNumber];/*用户文件*/structmdf{charuname[10];/*用户名*/UFUdir;/*用户文件目录*/}UFD[UserNumber];/*用户*/voidintFSystem(){inti,j,k,l;strcpy(UFD[0].uname,"a");strcpy(UFD[1].uname,"b");strcp
7、y(UFD[2].uname,"c");strcpy(UFD[3].uname,"d");strcpy(UFD[4].uname,"e");strcpy(UFD[5].uname,"f");strcpy(UFD[6].uname,"g");strcpy(UFD[7].uname,"h");strcpy(UFD[8].uname,"i");strcpy(UFD[9].uname,"j");for(i=0;i<10;i++){for(k=0;k<5;k++){doj=rand()%26;while(fnameA[j].flag);strcpy(UFD[i].Udir[
8、k].fn