




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计题目:模拟UNIX(Linux)文件系统学 院:信息科学与工程学院专 业:计算机科学与技术班 级:计信1302学 号:20131222171学生姓名: 张钟月指导教师:蔡卫东2015 年 7 月 31 日目 录1实验内容31.1基本要求32数据结构设计42.1文件结构体的定义42.2文件夹结构体的定义42.3用户名的数组定义42.4密码的数组定义52.5操作的数组定义53算法设计53.1功能模块图53.1.1程序执行基本流程53.1.2用户选择函数63.2算法思路63.2.1实现方法63.2.2设计思想74测试数据及程序运行情况84.1欢迎界面84.2用户选择界面84.3 用户登录界面94
2、.4帮助界面94.5创建目录94.6创建并显示文件104.7创建另一个目录并创建文件104.8写文件114.9读文件114.10显示当前目录和文件124.11在当前目录下创建新目录并创建文件进行读写操作124.12错误操作124.13显示子目录下的文件134.14退出当前操作134.15退出系统页面145实验过程中出现的问题及解决方法145.1关于文件的删除问题145.2关于多用户的权限问题145.3关于目录创建的问题155.4关于目录的修改操作问题156自我评析与总结15参考文献161 实验内容1.1 基本要求在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟UNIX文
3、件系统。(1) 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。(2) 编写一管理程序对此空间进行管理,以模拟UNIX(或Linux)文件系统,具体要求如下: 要求盘块大小1k 正规文件 i结点文件类型 目录文件 (共1byte) 块设备 管道文件 物理地址(索引表) 共有13个表项,每表项2byte 文件长度 4byte 联结计数 1byte 0号块 超级块 栈长度50 空闲盘块的管理:成组链接(UNIX) 或位示图法(Linux) 每建一个目录,分配4个物理块 文件名 14byte 目录项信息 i结点号 2byte 结构:0#:超级块 1# 20#号为i结点区 20# 30#号为
4、根目录区功能:初始化 建立文件(需给出文件名,文件长度) 建立子目录 打开文件(显示文件所占的盘块) 删除文件 删除目录 显示目录(即显示目录下的信息,包括文件、子目录等) 显示整个系统信息 2数据结构设计2.1文件结构体的定义struct Filesstring filename; /文件名int f_Owner; /所有者(07) string r_time; /文件最后修改时间int f_size; /文件大小string cont; /文件内容 Files *next; / 指向下一个文件的指针;2.2文件夹结构体的定义struct Folderint Owner; / 所有者(07)
5、string foldername; / 文件夹名字string m_time; / 文件夹创建时间Folder *folders; / 存放文件夹指针Files *file; / 存放文件指针Folder *fparent; / 指向路径父节点的指针Folder *next; / 指向同一层下一文件夹的指针;/多用户:usr1,usr2,usr3,usr8 (1-8个用户)、多级目录:可有多级子目录、具有login (用户登录)、/系统初始化(建文件卷、提供登录模块)、文件的创建: create、文件的打开:open、文件的读:read、文件的写:write、/文件关闭:close、删除文件
6、:delete 、创建目录(建立子目录):mkdir、改变当前目录:cd、列出文件目录:dir、退出:logout。2.3用户名的数组定义string UserName8 = "user0", "user1", "user2", "user3", "user4", "user5","user6", "user7"2.4密码的数组定义string PassWord8 = "12345","12345"
7、;,"12345","12345","12345","12345","12345","12345"2.5操作的数组定义string const Methods11 = "create", "open", "read", "write", "close", "fdelete", "mkdir", "cd", "
8、dir","help", "logout"3算法设计3.1功能模块图3.1.1程序执行基本流程3.1.2用户选择函数3.2算法思路3.2.1实现方法列出系统中的所有函数并说明函数的功能char* Time()获取当前时间void Mkdir(Folder* &Target, string &Name, int Unum)创建目录void Cd(Folder* list, Folder* &Target, string &Name, string &path)改变当前目录void Dir(Folder* &
9、amp;Target)列出文件目录void Create(Folder* &Target, string &Name, int Unum)文件的创建Files* Open(Folder* &Target, string &Name)打开文件void Read(Folder* &Target, string &Name)文件的读void Write(Folder* &Target, string &Name, int Unum)文件的写void Close(Folder* &Target, string &Name)
10、文件关闭void Delete(Folder* &Target, string &Name, int Unum)删除文件void logout()退出void Help()显示菜单void Chose(Folder* &list, Folder* &Target, int Unum, string path) 用户操作选择函数void login(Folder* &list, Folder* &Target, int Unum, string path)登陆void Begin(Folder* &list, Folder* &Ta
11、rget, string &path) 程序初始化函数void Run(Folder* &list, Folder* &Target, int Unum, string path) 用户登陆选择void Wellcome()系统欢迎界面函数void Byebye()程序退出界面函数void main()主函数 3.2.2设计思想(1) 定义全局变量Folder *list = NULLFolder *Target = NULLstring pathint Unum = 0(2) 主函数模块void main()Folder *list = NULL;Folder *Ta
12、rget = NULL;string path;int Unum = 0;system("color b");Wellcome();Begin(list, Target, path);Run(list, Target, Unum, path);Byebye();cout<<"输入 enter 键退出程序!"<<endl;getchar();getchar();4测试数据及程序运行情况4.1欢迎界面4.2用户选择界面4.3 用户登录界面4.4帮助界面4.5创建目录4.6创建并显示文件4.7创建另一个目录并创建文件4.8写文件4.9读
13、文件4.10显示当前目录和文件4.11在当前目录下创建新目录并创建文件进行读写操作4.12错误操作4.13显示子目录下的文件4.14退出当前操作4.15退出系统页面5实验过程中出现的问题及解决方法5.1关于文件的删除问题删除文件的设计刚开始因为算法设计的思想不够完善所以很久不能实现这个功能。后来通过查阅资料然后完成了这个功能。首先删除文件需要有权限限制,只有创建这个文件的用户才能删除目标文件。定义pfd指针指向要被删除的目标文件pre指针指向目标文件的前一个文件,若是删除文件链表的第一个文件的话,那就直接将指向表头的指针指向第二个文件。如果是删除最后一个文件的话,那就将pre指针直接指向NUL
14、L。否则,将pre的next指向pfd的next,然后释放pfd指向的文件。5.2关于多用户的权限问题因为UNIX系统是多用户系统,所以相对于Windows系统来说,文件需要增加一个关于用户的属性,这样在对文件进行写操作和删除操作时需要对文件的用户进行查询,确定当前用户是否有权限进行写操作和删除操作。但是对于各个用户来说,可以查看在磁盘上的各个文件,只是不能修改和删除非自己创建的文件或是文件夹。5.3关于目录创建的问题通过查询资料自己便有了一个想法,所谓的目录即路径,即在当前目录下创建一个新的文件夹。那创建一个新的文件夹首先要检查这个文件夹的名字是否重名,如果重名了,则创建失败,否则则在当前目
15、录中的文件夹的链表的末尾插入一个新的文件夹,如果当前目录下没有其他文件夹,则把该目录下的文件夹链表的头指针指向新建的文件夹。5.4关于目录的修改操作问题通过查阅资料我有了一个想法,修改目录,即修改当前的路径。如果修改为C,D,E盘的话,则直接将全局变量path修改为C:,D: E:。如果是在当前路径下扩充下一级文件,如果要扩充的目录在当前路径下则在当前路径上加上要扩充的目录,否则找不到路径。以链表的形式模拟链接C盘D盘E盘三个磁盘。以链表的形式模拟链接同一目录下的各个文件夹。以链表的形式模拟链接同一目录下的各个文件。这三个链表是相互独立,互不影响的。6自我评析与总结本次的操作系统课程设计是对自
16、己的一个提高,自己分配的题目是模拟UNIX文件系统,刚开始自己对这个茫然无知,但是自己查询资料借书自己看,慢慢的对UNIX系统有了初步的了解,同时对自己的课设任务也有了一定的认识,慢慢的觉得自己也可以做这个了。本学期的操作系统让我对计算机的软件基础有了初步的认识,模拟UNIX文件系统也是基于操作系统的所做的一个方面的事情,要求是对于多用户进行的文件管理,对于文件要进行一般的操作比如创建,打开,读写操作,以及目录的建立和改变当前目录,通过对UNIX系统的了解,我选择了C+来设计改程序,在编写源代码的过程中,自己过对于目录的创建,还有对当前目录的修改方面还是很是不理解,但是经过自己在网上查询资料,
17、再看别人写的源程序关于这两个方面的描述,自己在一段时间内将源程序写出,并经过修改终于实现了所要求的功能,而后自己参考别人的源代码,将自己的程序设计的更加合理化,加上时间方面的处理,使之在文件创建的时候记录创建时间,并在最后查看的时候显示时间,并且对于开始界面和结束界面也做了一定的处理。经过本次的课程设计,自己对于操作系统中的文件管理方面的认识更加的深刻,尤其是在对文件的处理方面自己做的更是得心应手了,而且自己查了很多的资料,完善了自己在这方面的不足,增强了自主学习的能力,我相信,下次自己能做的更好自评成绩:90参考文献1 B. Liu. Web Data Mining: Exploring hyperlinks, contents and usage dataM. Springer, 2006.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东卷-2025届高考物理4月模拟预测卷(含解析)
- 2025年广东省深圳市南山区蛇口中学中考物理一模试卷(含解析)
- 宜宾市2024-2025学年初三语文试题周练试卷含解析
- 上海行健职业学院《计量文化传播与设计》2023-2024学年第一学期期末试卷
- 湖南省二校联考2025届高三5月考前模拟化学试题含解析
- 辽阳市重点中学2025届高三下第六次模拟考试生物试题含解析
- 西安思源学院《基地社工服务与田野基地建设》2023-2024学年第二学期期末试卷
- 汕头市龙湖区2025年三下数学期末学业质量监测试题含解析
- 内蒙古北重公司第三中学2025年高三下-第二次月考英语试题试卷含解析
- 四川南充市高2025年高三第三次联考(江苏版)语文试题试卷含解析
- 幼儿保育专业人才培养方案
- 电子税务局出口退税在线申报操作(生产企业)
- 报修申请表(完整版)
- 《国际政治学》课件
- 栏杆计算书完整版本
- 人教版年五年级信息技术下册期中试卷(含答案)
- 农村土地延包确权实施方案
- PVC聚氯乙烯教学课件
- 工伤与职业病赔偿
- 市政工程(道路)课件
- 中考英语题型六选五课件
评论
0/150
提交评论