ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:211.12KB ,
资源ID:2980459      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2980459.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(济南大学计算机专业操作系统设计报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

济南大学计算机专业操作系统设计报告.docx

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测试数据及程序运

2、行情况 84.1欢迎界面 84.2用户选择界面 84.3 用户登录界面 94.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参考文献

3、161 实验内容1.1 基本要求在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟UNIX文件系统。(1) 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。(2) 编写一管理程序对此空间进行管理,以模拟UNIX(或Linux)文件系统,具体要求如下: 要求盘块大小1k 正规文件 i结点文件类型 目录文件 (共1byte) 块设备 管道文件 物理地址(索引表) 共有13个表项,每表项2byte 文件长度 4byte 联结计数 1byte 0号块 超级块 栈长度50 空闲盘块的管理:成组链接(UNIX) 或位示图法(Linux) 每建一个目录,分配4个物理块 文件名

4、 14byte 目录项信息 i结点号 2byte 结构:0#:超级块 1# 20#号为i结点区 20# 30#号为根目录区功能:初始化 建立文件(需给出文件名,文件长度) 建立子目录 打开文件(显示文件所占的盘块) 删除文件 删除目录 显示目录(即显示目录下的信息,包括文件、子目录等) 显示整个系统信息 2数据结构设计2.1文件结构体的定义struct Files string filename; /文件名 int f_Owner; /所有者(07) string r_time; /文件最后修改时间 int f_size; /文件大小 string cont; /文件内容 Files *nex

5、t; / 指向下一个文件的指针;2.2文件夹结构体的定义struct Folder int Owner; / 所有者(07) string foldername; / 文件夹名字 string m_time; / 文件夹创建时间 Folder *folders; / 存放文件夹指针 Files *file; / 存放文件指针 Folder *fparent; / 指向路径父节点的指针 Folder *next; / 指向同一层下一文件夹的指针;/多用户:usr1,usr2,usr3,usr8 (1-8个用户)、多级目录:可有多级子目录、具有login (用户登录)、/系统初始化(建文件卷、提供

6、登录模块)、文件的创建: create、文件的打开:open、文件的读:read、文件的写:write、/文件关闭:close、删除文件:delete 、创建目录(建立子目录):mkdir、改变当前目录:cd、列出文件目录:dir、退出:logout。2.3用户名的数组定义string UserName8 = user0, user1, user2, user3, user4, user5,user6, user7;2.4密码的数组定义string PassWord8 = 12345,12345,12345,12345,12345,12345,12345,12345;2.5操作的数组定义str

7、ing const Methods11 = create, open, read, write, close, fdelete, mkdir, cd, 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 &pa

8、th)改变当前目录void Dir(Folder* &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)文件关闭void Delete(F

9、older* &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* &Target, string &path) 程序初始化函数void Run(Folder* &list

10、, 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 *Target = NULL; string path; int Unum = 0; system(color b); We

11、llcome(); 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读文件4.10显示当前目录和文件4.11在当前目录下创建新目录并创建文件进行读写操作4.12错误操作4.13显示子目录下的文件4.14退出当前操作4.15退出系统页面5实验过程中出

12、现的问题及解决方法5.1关于文件的删除问题删除文件的设计刚开始因为算法设计的思想不够完善所以很久不能实现这个功能。后来通过查阅资料然后完成了这个功能。首先删除文件需要有权限限制,只有创建这个文件的用户才能删除目标文件。定义pfd指针指向要被删除的目标文件pre指针指向目标文件的前一个文件,若是删除文件链表的第一个文件的话,那就直接将指向表头的指针指向第二个文件。如果是删除最后一个文件的话,那就将pre指针直接指向NULL。否则,将pre的next指向pfd的next,然后释放pfd指向的文件。5.2关于多用户的权限问题因为UNIX系统是多用户系统,所以相对于Windows系统来说,文件需要增加

13、一个关于用户的属性,这样在对文件进行写操作和删除操作时需要对文件的用户进行查询,确定当前用户是否有权限进行写操作和删除操作。但是对于各个用户来说,可以查看在磁盘上的各个文件,只是不能修改和删除非自己创建的文件或是文件夹。5.3关于目录创建的问题通过查询资料自己便有了一个想法,所谓的目录即路径,即在当前目录下创建一个新的文件夹。那创建一个新的文件夹首先要检查这个文件夹的名字是否重名,如果重名了,则创建失败,否则则在当前目录中的文件夹的链表的末尾插入一个新的文件夹,如果当前目录下没有其他文件夹,则把该目录下的文件夹链表的头指针指向新建的文件夹。5.4关于目录的修改操作问题通过查阅资料我有了一个想法

14、,修改目录,即修改当前的路径。如果修改为C,D,E盘的话,则直接将全局变量path修改为C:,D: E:。如果是在当前路径下扩充下一级文件,如果要扩充的目录在当前路径下则在当前路径上加上要扩充的目录,否则找不到路径。以链表的形式模拟链接C盘D盘E盘三个磁盘。以链表的形式模拟链接同一目录下的各个文件夹。以链表的形式模拟链接同一目录下的各个文件。这三个链表是相互独立,互不影响的。6自我评析与总结本次的操作系统课程设计是对自己的一个提高,自己分配的题目是模拟UNIX文件系统,刚开始自己对这个茫然无知,但是自己查询资料借书自己看,慢慢的对UNIX系统有了初步的了解,同时对自己的课设任务也有了一定的认识,慢慢的觉得自己也可以做这个了。本学期的操作系统让我对计算机的软件基础有了初步的认识,模拟UNIX文件系统也是基于操作系统的所做的一个方面的事情,要求是对于多用户进行的文件管理,对于文件要进行一般的操作比如创建,打开,读写操作,以及目录的建立和改变当前目录,通过对UNIX系统的了解,我选择了C+来设计改程序,在编写源代码的过程中,自己过对于目录的创建,还有对当前目录的修改方面还是很是不理解,但是经过自己在网上查询资料,再看别人写的源程序关于这两个方面的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1