欢迎来到天天文库
浏览记录
ID:9627423
大小:1.66 MB
页数:39页
时间:2018-05-04
《操作系统模拟unix文件系统实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统大型实验班级:学号:姓名:一实验介绍……………………………………………………………………1.实验名称2.实验目的3.实验内容及要求二实验环境……………………………………………………………………三实验设计……………………………………………………………………1.数据结构设计2.系统流程设计3.实现命令操作四模块详解……………………………………………………………………1.文件操作2.用户操作五实验演示……………………………………………………………………1.初始化磁盘块2.用户登录3.目录操作4.文件操作六源代码……………………………………………………………
2、…………七实验心得体会……………………………………………………………………1.调试中遇到的问题总结2.实验感悟一、实验介绍1.实验名称操作系统大型实验2.实验目的完成一个UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。3.实验内容及要求(1)文件卷结构设计0#块可省略I节点栈及空间为20项块大小为512字节卷盘块数大于100I节点盘块数大于10块(2)I节点结构设计文件大小文件联接计数文件地址文件拥有者文件所属组文件权限及类别文件最后修改时间其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址(3)目录结构用16字节表示
3、,其中14字节为文件名,2字节为I节点号(4)用户及组结构用户信息中包括用户名、口令,所属组,用户打开文件表(5)文件树结构除(4)要求外,适当考虑UNIX本身文件树结构(6)实现功能Ls显示文件目录Chmod改变文件权限Chown改变文件拥有者Chgrp改变文件所属组Pwd显示当前目录Cd改变当前目录Mkdir创建子目录Rmdir删除子目录Mv改变文件名Cp文件拷贝Rm文件删除Ln建立文件联接Cat连接显示文件内容Vi文件写入Mk创建文件umask查看用户屏蔽码Umask文件创建屏蔽码Passwd修改用户口令Ls-l查看文件类型Login用户注销Logou
4、t退出系统Help显示帮助信息二、实验环境实验设备:MicrosoftVisualStudio2010开发语言:c++三、实验设计1.数据结构设计磁盘文件结构设计:用一个名为disk.txt的文件模拟Unix系统磁盘,总共分为200块,每块514个字节(实际可用512个字节,还有2个字节是磁盘分割符‘’),使第一块(0#)盘块做为超级块,记录该系统磁盘的使用情况;第二块(1#)盘块——第十三块(12#)盘块作为存储I结点使用,每个I结点74个字节,所以每个盘块可以存放6个I结点,总共有72个I结点,记录在超级块中;十三块(12#)以后的盘块作为存储文件内
5、容使用,总共187个盘块,用成组连接法记录在超级块中。对于I结点的具体设计如下:classINode//(74B){public:intfsize;//文件大小setw(6)intfbnum;//文件盘块数setw(6)intaddr[4];//四个直接盘块号文件最大为4*512=2048=2KBsetw(4)*4intaddr1;//一个一次间址()文件大于2KB,小于2KB+16*512=10KBsetw(4)intaddr2;//一个两次间址()文件大于10KB,小于10KB+16*16*512B=138KBsetw(4)charowner[6];//
6、文件拥有者setw(6)chargroup[6];//文件所属组setw(6)charmode[12];//文件类别及存储权限setw(12)charctime[10];//最近修改时间setw(10)intconnect;//文件联接计数};对于超级块的具体设计如下:classsuperBlock{public:intFIStack[72];//空闲结点号栈setw(3)*72intFICount;//空闲i结点总数setw(3)intFIPtr;//空闲结点栈指针setw(3)intFBStack[10];//空闲盘块号栈setw(4)*10intFBC
7、ount;//空闲盘块总数setw(4)intFBPtr;//空闲盘块栈指针setw(3)};初始化磁盘示意图:14#13#120#块。。。。。。。。。。。。。。1#块12#块13#块14#块16#块15#块。。。。。。。。。。。。。。。空闲节点号栈空闲盘块号栈空闲节点总数71空闲节点指针1空闲盘块总数186空闲节点指针172。。。。。。。。22#。。。。22#。。。。1272用于文件具体内容存放除了超级块、I结点、磁盘文件的数据结构设计以外,为了系统操作方便,我还设计了用户类、文件目录类。用户类具体设计:classUSER//用户(24B){public:
8、charname[6];//用户名setw(6)ch
此文档下载收益归作者所有