欢迎来到天天文库
浏览记录
ID:5408171
大小:228.88 KB
页数:57页
时间:2017-12-10
《模拟unix文件系统实验报告汇总》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、模拟Unix文件系统实验报告汇总一.实验介绍(1)文件卷结构设计i节点区数据区管理区0#1#…K#K+1#K+2#K+3#…n#K=12,n=2048(2)I节点结构设计文件大小文件联接计数文件地址文件拥有者文件所属组文件权限及类别文件最后修改时间其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址(3)目录结构用16字节表示,其中14字节为文件名,2字节为I节点号(4)用户及组结构用户信息中包括用户名、口令,所属组,用户打开文件表(文件树结构应与用户相对应:有每个用户的HOME目录)组信息中可只包含组名,组号。二.实验环境Linux操作系统,标准c89一.实验设计3.1系统流程
2、开始输出登录选1,初始化选2输入一个整型ii>0?NYi==2?N结束Y初始化程序i==1?NY进入登录程序是否退出?登录成功?NNY结束进入命令操作程序Y结束3.2文件结构1.基本思路:用硬盘上的一个文件(funix.txt)来模拟一个文件卷。2.磁盘块的设计:每块512个字节,一共2048块,数据区占用2035块,I节点占用12块,每个i节点占48个字节,一共128个i节点,超级块占第0块。3.空闲磁盘块:采用成组链接法管理。每组10块,格式化时假设所有块都分配了出去,将所有块按从大到小的顺序依次压入。4.I结点管理:采用位示图法,注意此时位示图不表示空闲块,只表示相应的i节点号是否
3、被利用,如果被利用相应的i节点号对应位示图的那一位为1,如果没有被利用则对应的位为0。3.3实现命令操作命令格式ls显示文件目录chmod改变文件权限chown改变文件拥有者chgrp改变文件所属组pwd显示当前目录cd改变当前目录mkdir创建子目录rmdir删除子目录umask文件创建屏蔽码mv改变文件名cp文件拷贝rm文件或目录删除ln建立文件联接cat连接显示文件内容passwd修改用户口令touch创建文件vi编写文件内容四.数据结构4.1超级块#ifndefSUPERstructsuper{unsignedintcsize;//文件系统的总块数(4)unsignedshort
4、bsize;//每块的字节数(2)unsignedintdsize;//数据块的块数(4)unsignedintdbeg;//数据块的起始块号(4)unsignedintdemp;//空闲盘块数(4)unsignedshortisize;//i节点块的总块数(2)unsignedintibeg;//i节点的起始块号(4)unsignedshortinum;//i节点的个数(2)unsignedshorti[8];//i节点位示图(12)unsignedshorticlock;//inode锁(2)unsignedintmfsize;//文件的最大所占字节数(4)unsignedshort
5、bmf;//文件的最大所占块数(2)time_tbu;//修改时间(8)shortdssize;//当前空闲盘块好栈中的空闲盘块数目(2)unsignedintdss[DS_size];//(400)unsignedshortdsclock;//成组链接锁(2)}sup;#endif4.2I节点//外存i节点#ifndefINODEstructinode{unsignedintfsize;//文件大小(4)unsignedshortfln;//文件连接数(2)chargid;//文件所属组id(1)charuid;//文件拥有者id(1)intfmode;//文件的类型和权限(4)tim
6、e_titime;//文件最后修改时间(8)unsignedintaddr[6];//文件地址(24)};#endif//内存i节点#ifndefMINODEstructminode{intiid;//i节点号structinodein;//读入内存的外存i节点/charchflg;//是否被修改unsignedshortmico;//(未用到)进程连接的个数};#endif4.3目录//目录#ifndefLISTstructlist{charls_name[14]://文件或目录名;unsignedshortib;//对应的i节点号/};#endif4.4用户文件表#ifndefLS_
7、MINODEstructls_minode{unsignedintf_offest://文件相对起始位置的偏移;intf_flag://文件的存取权限;unsignedshortf_count://打开这个文件的操作的个数;structminode*mi://内存i节点;}f_inode[50];#endif4.5用户和组外存用户信息#ifndefUSERstructuser{charusername[14];//用户名charui
此文档下载收益归作者所有