模拟文件系统计算机操作系统.doc
《模拟文件系统计算机操作系统.doc》由会员分享,可在线阅读,更多相关《模拟文件系统计算机操作系统.doc(39页珍藏版)》请在沃文网上搜索。
1、目 录1、引 言22、需求分析33、概要设计43.1 系统的主要功能4(1)主界面4(2)Create 建立文件5(3)Read 读取文件6(4)Write 写入文件7(5)Delete 删除文件9(6)Mkdir 建立目录10(7)Cd 切换目录11(8)Logout 退出登录123.2 系统模块功能结构12(1) 结构说明:123.3 运行环境要求133.4 数据结构设计133.5数据结构说明14(1)文件结构链表14(2)函数介绍144、详细设计154.1 模块设计154.2 算法流程图155、系统源代码17见附录176、系统测试及调试186.1 运行结果及分析186.2 系统测试结论2
2、27、总结与体会23参 考 文 献24附录 系统的主要源代码2511、 引 言计算机操作系统是计算机系统中不可缺少的基本系统软件,计算机操作系统是由硬件和软件两部分构成的。操作系统实际上是一个计算机系统中硬、软件资源的总指挥部。能有效的组织和管理计算机系统中的硬件和软件资源、合理的组织计算机工作流程,控制程序的执行、并向用户提供各种服务功能,使得用户能够合理、方便、有效的使用计算机,是整个计算机系统能高效运行的一组程序模块的集合。操作系统在计算机体系中张非常重要的地位。在现代计算机管理中,总是把程序和数据以文件的形式存储在磁盘和磁带上,供所有的或指定的用户使用。为此,在操作系统中必须配置文件管
3、理机构。文件管理的主要任务是对任务和系统文件进行管理,以方便用户使用,并保证文件的安全性。为此,文件管理应具有对文件存储空间的管理、目录管理、文件的读写管理,以及文件的共享与保护等功能。从计算机诞生到现在虽然只经历了短短几十年的时间,但无论是在软件还是在硬件方面,计算机都有着飞跃式的发展。随着计算机应用不断增加,计算机上所需要存储的数据和程序也日益增多,早期的文件管理方式已经不能满足现在的需要。计算机操作系统是配置在计算机硬件上的第一层软件,是对硬件的首次扩充。他在计算机系统中占据了特别重要的地位。操作系统的主要功能是进行处理机管理功能,为了进一步了解文件管理功能,我们建立了一个文件模拟系统,
4、要求编写程序,模拟实现文件系统中关于目录及文件的操作。392、需求分析该模拟文件系统包括目录文件(简称目录)、普通文件(简称文件),并实现下面一些基本功能:1 创建目录:mkdir目录名,再指定路径下创建指定的目录,或者在没有指定路径时,在当前目录下创建子目录。2 改变目录:cd目录名,工作目录转到指定的目录下。cd.返回根目录下3 创建文件:create文件名,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。4 写入文件:Write 文件名,把需要写入的数据,写入文件之中。5 读取(显示)文件:Read 文件名,把文件的数据,打印在屏幕上。6 删除文件:delete文件名,删
5、除指定的文件。6 获得命令帮助HELP7 退出文件系统LOGOUT要考虑的特殊情况:1)各个命令对全路径和相对路径的支持A.目录不存在时,给出错误信息B.不能用cd进入文件C.相对路径的解析D.路径中的空格剔除2) 删除目录或文件时的问题A. 删除不存在的文件或目录,给出错误提示B. 删除目录时目录不为空;如果该目录为空,则可删除,否则给出是否做删除,删除操作将该目录下的全部文件和子目录都删除C. 进入到某个目录下,却要删除本目录或者上级目录3、概要设计3.1 系统的主要功能此文件模拟系统主要是模拟有关目录和文件的创建等操作,具体如下:(1) 主界面主界面的设计主要包含整形的main()函数,
6、在函数体中通过调用while循环语句来实现用户只能验证三次用户名和密码限制,以及对其他模块(帮助命令等)的调用。int main()/主函数main()int i=0;bool in=false;char users8,pwd12;cout|-|endl;cout| 模拟Linux文件系统 |endl;cout| 账号:usr1-usr8 密码:usr1-usr8 |endl;cout| 你只有三次机会来试验账号 |endl;cout|_|endl;coutendl;while(i3)/限制用户的用户名和密码的验证次数coutusers;coutpwd;if(chklogin(users,pw
7、d)in=true;break;i+;help();/调用帮助函数,以便用户命令的使用createroot();while(in)if(!run()break;登录模块中包含了8个默认用户名和密码,且用户在登录时只有三次登录机会,登录不成功则自动退出系统。users usrarray8 =usr1,usr1,/用户名:usr1,密码:usr1usr2,usr2,/用户名:usr2,密码:usr2usr3,usr3,/用户名:usr3,密码:usr3usr4,usr4,/用户名:usr4,密码:usr4usr5,usr5,/用户名:usr5,密码:usr5usr6,usr6,/用户名:usr6,
8、密码:usr6usr7,usr7,/用户名:usr7,密码:usr7usr8,usr8,/用户名:usr8,密码:usr8;(2) Create 建立文件文件的建立主要是使用整形函数create()函数来实现的,具体如下:int create() /定义一个创建文件的整形函数create()temp=initfile( ,0);cintemp-filename;/输入文件名cintemp-content;/输入内容if(recent-child=NULL)temp-parent=recent;temp-child=NULL;recent-child=temp;temp-prev=temp-ne
9、xt=NULL;cout文件建立成功!child;while(ttemp-next)ttemp=ttemp-next;if(strcmp(ttemp-filename,temp-filename)=0& /判断子目录是否存在ttemp-isdir=0)printf(对不起,文件已存在!); /输出文件已经存在return 1;ttemp-next=temp;temp-parent=NULL;temp-child=NULL;temp-prev=ttemp;temp-next=NULL;cout文件建立成功!filename;if(recent-child=NULL)/判断文件是否存在cout文件
10、不存在!child-filename,filename)=0)/读取文件coutchild-contentchild;while(temp-next)if(strcmp(temp-next-filename,filename)=0)coutnext-contentendl;return 1;cout文件不存在!filename;if(recent-child=NULL)cout文件不存在!child-filename,filename)=0)recent-child-isopen=1;/设置文件标记为打开cinrecent-child-content;recent-child-isopen=0
11、;/设置文件标记为关闭cout文件写入成功!child;while(temp-next)if(strcmp(temp-next-filename,filename)=0)recent-child-isopen=1;/设置文件标记为打开cintemp-next-content;recent-child-isopen=0;/设置文件标记为关闭cout文件写入成功!endl;return 1;cout文件不存在!filename;temp=new fnode;if(recent-child)temp=recent-child;while(temp-next & (strcmp(temp-filena
12、me,filename)!=0 | temp-isdir!=0)temp=temp-next;if(strcmp(temp-filename,filename)!=0)/判断文件是否存在cout不存在该文件!endl;return 0;elsecout不存在该文件!parent=NULL)temp-prev-next=temp-next;if(temp-next)temp-next-prev=temp-prev;temp-prev=temp-next=NULL;elseif(temp-next)temp-next-parent=temp-parent;temp-parent-child=tem
13、p-next;delete temp;cout文件已删除!temp-filename;if(recent-child=NULL)temp-parent=recent;temp-child=NULL;recent-child=temp;temp-prev=temp-next=NULL;elsettemp=recent-child;while(ttemp-next)ttemp=ttemp-next;if(strcmp(ttemp-filename,temp-filename)=0&ttemp-isdir=1)printf(对不起,目录已存在!);return 1;ttemp-next=temp;t
14、emp-parent=NULL;temp-child=NULL;temp-prev=ttemp;temp-next=NULL;return 1;(7)Cd 切换目录目录的切换主要是使用整形函数cd()函数来实现的,具体如下:int cd()/定义一个目录切换的整形函数cd() char toparaPARA_LENGTH;cintopara;If(strcmp(topara,.)=0)int i;while(recent-prev)recent=recent-prev;if(recent-parent)recent=recent-parent;i=strlen(para);while(para
15、i!=/ & i0) i-;if(i!=0)parai=0;elseparai+1=0;elsefindpara(topara);return 1;(8)Logout 退出登录当用户执行完自己的操作或任务时,输入logout即可退出系统。3.2 系统模块功能结构图2-1 系统结构图(1) 结构说明:A. 系统进入初始化状态,用户登录且只有三次机会。B. 验证是否成功,成功后用户执行操作,系统接收并执行指令。C. 建立目录,不同的用户可以建立不同的目录。D. 建立属于自己目录的子目录,并可以在子目录之间切换。E. 建立目录下面的文件。F. 用户可以执行写入、读取和删除文件G. 用户是否退出?H.
16、 退出则结束。I. 不退出则进入C步骤。3.3 运行环境要求操作系统Windows Xp ,开发工具VC+6.03.4 数据结构设计用户结构:账号与密码结构typedef struct userschar name8;char pwd10;users;本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。users usrarray8 =usr1,usr1,usr2,usr2,usr3,usr3,usr4,usr4,usr5,usr5,usr6,usr6,usr7,usr7,usr8,usr8,;3.5 数据结构说明(1)文件结构链表
17、struct fnodechar filenameFILENAME_LENGTH;int isdir;int isopen;char content255;fnode *parent;fnode *child;fnode *prev;fnode *next;(2)函数介绍fnode *initfile(char filename,int isdir);/初始化文件或目录void createroot();/建立系统根目录int run();系统运行int findpara(char *topara);对参数进行处理bool chklogin(char *users, char *pwd);检查
18、账号与口令void help();命令列表int mkdir();建立目录int create();建立文件int read();读取文件int write();写入文件int del();删除文件int cd();切换目录int dir();文件与目录列表4、详细设计4.1 模块设计此课程设计把文本作为研究对象来模拟操作系统的文件系统工作过程。所以用一个字符串数组来模拟磁盘空间,顾名思义,模拟磁盘提供字符的存储服务。所有用户构成一个数组,每个数组元素是一个结构体,每个结构体包括三部分,用户的用户名、用户密码和文件链表(由于模拟文件系统的文件数量不多,故文件表采用线性链表来存储。线性表每个结点
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 文件系统 计算机 操作系统
