共两个不同设计例子,都含详细的文档资料。
任务2.设计一个简单的二级文件系统设计要求:在任一OS下,建立一个大文件,把它假象成硬盘,在其中实现一个简单的模拟文件系统。
编写一管理程序对此空间进行管理,要求:1.实现盘块管理2.实现文件的读写操作3.每组最多2人,小组内要有明确分工,课程设计报告中设计部分可以相同,个人实现部分不同参考建议:将模拟硬盘的文件空间划分为目录区,文件区;
采用位示图进行空间管理,盘块的分配使用显示链接(FAT表)的方式。
设计技术参数(数据结构)参考:#defineMaxSize100#defineDisk512//每个盘块大小为512bit#defineNumDisk2048//有2048个盘块,既可分配空间为1M/*************目录和文件的结构定义***********************/structDirectoryNode{charname[9];/*目录或文件的名字*/inttype;/*0代表目录,1代表普通文件*/structDirectoryNode*next;/*指向下一个兄弟结点的指针*/structDirectoryNode*preDirFile;/*指向父结点的指针*/structDirectoryNode*subFile;/*指向第一个子结点的指针*/intsize;/*如果是文件则表示文件的大小*/intfirst;/*起始盘块号*/intlast;/*末尾盘块号*/intorder;/*备用*/};//连续分配structFileSys{intVacTable[NumDisk];//空闲表,0为空闲,1为被用structDirectoryNoderoot;//根目录structDirectoryNodeDirectory[NumDisk];}*filesys;typedefstruct{structDirectoryNode*DirFile;charname[9];}DataType;//包含一个指向目录的指针和名字typedefstruct{//队列结构的实现DataTypedata[MaxSize];intfront,rear;//分别表示队列的头结点和尾结点}Tp;voidInitQueue(Tp*sq)//队列初始化intEnAddQueue(Tp*sq,DataTypedata)//在队列中增加元素DataTypeEnDelQueue(Tp*sq)//从队列中删除一个元素intEmpty(Tp*sq)//判断队列是否为空,返回0表示队列为空①.Dir:显示目录内容命令,显示当前目录下的文件和子目录。
②.Md:创建目录操作。
③.Create:创建文件,在当前目录下创建一个文件。
④.all:显示从根目录开始的所有目录和文件及其层次结点。
⑤.Cd:改变目录。
⑥.Del:删除文件操作。
⑦.Rd:删除目录操作,删除当前目录下的子目录。
⑧.Ren:重命名函数⑨.Exit:退出命令
1