




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统大型试验实验报告姓名:XX班级:软件工程110x学号:201126630xxx、名称操作系统大型试验。二、目的用C+珊写出一个简单的模拟文件系统,实现目录的添加、删除、重命名,文件的添加、删除、重命名、文件和目录、文件的拷贝。三、要求开发工具:word,vcwin32api1 .设计和实现一个简单的文件系统,要求包括目录、普通文件和文件的存储2 .文件系统的目录结构采用类似Linux的树状结构;3 .要求模拟的操作包括:a)目录的添加、删除、重命名;b)目录的显示(列表)c)文件的添加、删除、重命名d)文件和目录的拷贝4 .用户进入时显示可用命令列表;用户输入help时显示所有命令的帮
2、助文档;输入某个命令+?时显示该条命令的使用说明5 .用户输入exit时退出该系统6 .实验实现基于windows平台;7 .实验开发语言可以选用C/C+等四、设计1 .主要思路说明本模拟系统通过一个大小固定的数组要代表物理盘块,假设共有1024块,新增目录占一块,新增文件占一块,文件中可输入内容,内容假设定义为5个字符占一块,超出则应新申请空间。模拟物理盘块的数组中,数组内容为-99代表改物理盘块内容为空,可使用,其他数字均代表该物理盘块被占用,其中-3代表是占用文件的末结点,其他整数代表是文件内容的下一个寻址下标,另有一个string类型的数组来存储内容,模拟文件写入了对应下标的物理盘块中
3、。设置了一个全局指针指向根结点,一个全局指针指向当前操作目录。搜索空白物理盘块时采用顺序搜索物理盘块数组。存储形式主要采用类似二叉树结构,如目录为根,目录下的第一个文件或目录存在根的子节点,目录下的其他文件或目录存在第一个文件或目录的兄弟节点,以此类推。本程序仅seperate()函数使用现成代码,此函数功能为将输入命令串分离,仅仅起到美观作用,其余所有代码均为原创!2 .中优功能:1)能实现动态增长,即当输入文件的内容大小大于分配的模拟物理盘块时系统能够自动寻找空物理盘块并分配,将超出的内容保存在新的物理盘块中,若超出模拟磁盘大小,则超出部分不保存且返回提示。2)能实现级联删除,即当删除目录
4、(文件夹)时,目录下的所有内容也应当删除并正确释放物理盘块空间。3)能实现目录的复制,即复制目录时(文件夹)时,该目录下的所有文件和目录也应准确复制至目标目录中,并正确分配物理盘块空间。3 .主要函数和类的定义1)主要函数定义#defineshow_bnum20#defineblock_size1024intblockblock_size;stringcontentblock_size;intMsize=5;fnode*root=newfnode("WP:",0,0);fnode*current_path=newfnode();fnode*seek_flag=newfnod
5、e();fnode*cp_flag=newfnode();voidinitialize。;intseekTarget(stringname);/显示物理盘块的块数/物理盘块块数/假设有block_size 块物理盘块/存放文件内容/此处为模拟磁盘大小为输入5个字符/设置根目录/当前路径/作为查找标志/作为复制的位置标志/初始化/搜索文件或目录/搜索目录/删除节点/释放物理盘块/搜索可用物理盘块/显示当前路径/增加目录、文件/显示当前目录下的所有文件重命名/分离命令/进入目录/增加文件功能入口/增加目录功能入口/删除文件或目录功能入口显示物理盘块占用情况/重命名功能入口查看帮助查看文件内容/写文
6、件/清屏/退出/复制功能入口/复制目录/复制文件/复制节点/找到复制的目标目录计算目录大小intseek_log(stringname);voiddelete_node(stringname);intfreeblock(fnode*);intseekfreeblock();voidshow_current_path();voidadd_file(stringname,intt);voidshow_curpath_all();voidrename_file(stringOname,stringNname);/voidseperate();voidcd();voidadd_File();voida
7、dd_Log();voiddelete_file();voidshow_memory();/voidre_name();voidhelp();/voidshow_content();/voidwrite_file();voidClear_();voidExit();voidcp();voidcp_log(fnode*target,fnode*source);voidcp_file(fnode*target,fnode*source);voidcp_node(fnode*target,fnode*source);intfind_target_log();intcalculate_logsizeM
8、ain(fnode*);intcalculate_logsize(fnode*);2)文件节点类的定义:教育资料classfnodepublic:stringfilename;inttype;fnode*parent;fnode*child;fnode*brother;intblock_num;intisBro;是intisCld;是fnode()type=-1;parent=NULL;child=NULL;brother=NULL;block_num=-1;isBro=0;isCld=0;fnode(stringn,intt,intb)type=t;filename=n;parent=NUL
9、L;child=NULL;brother=NULL;block_num=b;blockblock_num=-3;isBro=0;isCld=0;fnode(fnode*p,stringname,intt,intb)/文件名/文件类型,1为普通文件,0为目录文件/父节点/子节点/兄弟节点/表示占用的物理盘块块号/表木是否是在同级目录下,。表本不是,1表不/是否为目录下第一个节点,1表示是,0表示不/初始化/根节点初始化/文件节点初始化parent=p;filename=name;type=t;child=NULL;brother=NULL;block_num=b;blockblock_num=-
10、3;命令echo md delcdcpdirrenmem cls exitisBro=0;isCld=0;/拷贝函数voidcopy(fnode*cp)filename=cp->filename;type=cp->type;parent=cp->parent;child=cp->child;brother=cp->brother;block_num=cp->block_num;;4.命令:解释echo命令可以在当前目录下创建一个文件,具体格式:echo+namemd命令可以在当前目录下创建一个目录文件,具体格式:md+namedel命令可以在当前目录下删除一
11、个已存在的文件或目录(支持级联删除),具体格式:del+namecd命令可以进入下一级目录或返回上级目录、根目录,具体格式:cd+name或cd+.或cd+.cp命令可以复制当前目录下一个指定的文件或目录至指定的目录,具体格式:cp+name+roaddir命令可以显示当前目录下的所有文件和目录,具体格式:delren命令可以重命名一个存在于当前目录下的文件或目录,具体格式:ren+name+newnametyptyp命令可以查看当前目录下一个文件的内容,具体格式:typ+namewrtwrt命令可以在当前目录下写内容至一个已存在的文件,具体格式:wrt+name+contentmem令可以查
12、看模拟物理盘块的使用情况,具体格式:memcls命令为清屏命令,具体格式:clsexit命令为退出命令,具体格式:exit五、关键技术流程图及说明提示:若图中文字无法看清,可用MicorsoftVisio打开压缩包下“部分程序流程图”文件夹的绘图文件查看。1 .增加文件或目录(此功能比较简单,流程图写的较详细就不做说明):工由翼融收入工件名邓z件类整2 .删除目录(实现级联删除):说明:删除目录时删除文件和删除目录本身放在同一个函数中,删除目录下的所有文件放在freeblock函数里,这样比较好处理。下面给只给出递归函数的流程图。3 .将内容写入文件(实现动态增长):说明:图中Msize为模拟
13、规定的文件块字符串大小,比如Msize=5,那么一个物理盘块只能存5个字符,超出则要申请新的空间。主要采用双重循环方法写入,外层循环为需要的块数,内层循环为Msize,用string累加字符串内容,内层循环退出后新申请一个空间并content (为string 类型的数组,将对应下标赋给上一个物理盘块数组,再将对应内容存入模拟存储内容)数组中,直至退出外层循环。4 .复制目录:说明:这里和删除目录一样,写了两个复制函数,这样写同样因为递归调用是比较方便,第一个函数里新建了一个阶段第一个函数传入参数为目标目录指针和被复制的目录的指针,复制被复制的目录的内容,然后将新建节点的子节点和被复制目录的子
14、结点传入下一个递归调用函数(因为目录的内容存于目录的子节点,与兄弟节点无关),第二个函数就是递归调用函数cp_node,下面就只给出cp_node的流程图(复制之前同样进行了路径的判误操作,内存大小的判断操作,是否重名的判断操作,被复制目录是否存在判断操作,这些操作在递归函数之前完成,所以下面的递归函数不体现这些操作)。六、运行结果1 .主界面展示:图:主界面展示2.help命令展示:具体格式1feinulateFileSysten2014.01.0?1隘根所有喇吴勃俣富所有权札图:help命令展示斗示义巨II二0呆目T-有Q情。所录。用而新录c.irH-3-目容使下T目录目录一芮“块令num
15、b定444乂件内理-nO1鼻,屏出71学复显重显写查总可生¥明说休具加统加t令3ibB1X+f3.echo命令展示:图:echo命令展示4.del命令展示:图:del命令展示-普通删除说明:创建了目录logl,在logl中创建一系列文件和目录,磁盘使用情况显示已分配,实用del删除命令后查看磁盘分配证明级联删除是可靠的。图:del命令展示-级联删除5.md命令展示:图:md命令展示6.cd命令展小:说明:图中展示了cd+namecd+.、cd+.三种cd命令的使用和判别情况。图:cd命令展示7.dir命令展示:图:dir命令展示8.typ命令展示:图:typ命令展示9.ren命令展示
16、:图:ren命令展示10.wrt命令展示:图:wrt命令展示说明:此处为了实验方便,将磁盘大小限定为5,每块磁盘输入的字符数限2,输入的内容112233445566778899需要9块磁盘块,而磁盘块为5,根目录占用一块,只能输入4块大小的内容,即11223344,所有文件file只写入了11223344。图:wrt动态增长展示11 .mem令展示:图:mem令展示12 .cls命令展示:Si.Rulat«File£/白t哥it1*不2014=01,09版权所有<WP?吴彭口保鬻所有权利其TZ数7WP:>iftcfi!以下&前市'咂理盘您的实窕情
17、兄,川代羲可用.内代表褴占翔且为书文竹块,J1五下一块的寻址下行-3-99-99-9写-99-9勺-99TQ-»?-*?-99-91?一”T9-?»TQ-99一孑¥WPz、r?chof:i】吟U'PFiJ.e=rir;ss:ayexnpLutlic1lEjbMjr1JLdVP=>in*?Hi,塞辛骂翦曹弃糅的实验情况.用代表可用,7代表被占用且为末文件块-32345:3-99夕97,-99T埠-?-99-?-92TQ-79-9?#?-99WP:>a一不是内郃或外邹命令,也不是可运行的他字或或电港文件.Wfc5>di3不是内部或外部命令,也
18、不是可运行的程序或批处理文件,111mdMF不是内苛或外部命令.也不是可运行的程序就批处理文件/up=>dr1好不是内部或外部琮齿.也不拈可运行的程序或把处理文件。IfPCUfF不是内部或外部命令.也不是可运行的程序或扫处理文件,WP:>clo图:cls命令展示-1.£:柝ilf5>itemFiie一System'DebuglFile一工户tefE*图:cls命令展示-213 .cp命令展示:说明:图中根目录(WP)下创建了目录a(mda)、目录b(mdb),在a目录下创建了b目录(mdb),在b目录中创建了文件a(echoa)、目录c(mdc),文件a中输
19、入1111122222(wrta111112222)内容代表占了两块物理盘块(程序中Msize模拟大小,设为5个字符了),再进入目录c(cdc),c中先创建目录f(mdf)再创建文件g(与之前创建顺序不同说明程序在不同情况下能正常运行),在g中输入5个3,5个2,5个1(wrtg333332222211111)代表占用3块物理盘块空间,再返回目录a(cd.cd.),将目录a下的目录b复制给目录WPF的目录c(cpbWP:c),再将目录a中的目录b删除(delb证明的确是复制而非简单指针指向),进入WPT的目录c查看刚复制的内容(dir)。物理盘块使用情况中第一个-3为根目录占用,第二个-3是目
20、录a,第三个-3是目录c,接下来的8个-99是目录a中原目录b占用的空间(此处证明删除是可靠的),图中显示目录c中确实成功复制了目录b及目录下的所有内容(使用dir命令查看)。33332222211111箕表可.用文件 目录文件点用羊:35坤! 占用首块为第S hrulwlE 版权所有L月第;1,块物理盘块代去械占用且为未文件或,箕它数字WF; uMjXyp d文件卫的内容为11111122222WP: cXbz >dirFile 8v«cen I:拆率 2Q14. “上民彭.仔窗所有权利MP:o>ind b VP*a>cA b WP: Xn'JjEchu
21、a UP : XaXb>bJi*t a ' UP! Xa'Jbnid c UP:XBXb>nd C MP: y/Sc >nd f WP; Ynhr >wrM力 WP: aNb& >wrt : HP: 5、hy . WP;hMP;fl?cp h VF; UP:a>dDl bWPi'xjcVdir目录名;h文件美星;目录HP:>c>cd hHP:cXb>clir;Fi I _S/5Tpm:F I 户jSyst它e' D?ru gFi' e_Sy5re<Ti图:cp命令展示14.exit命令展
22、示:图:exit命令展示15 .综合展示:说明:echoa在根目录(WP:)下创建了文件a,mdb在根目录(WP:)下创建了目录b,dir显示根目录下的所有文件和目录,wrtaaaaaabbbbbccccc在文件a中输入了一串内容,typa显示文件a中的内容,cdb进入目录b,mda在目录b下创建了目录a,cda进入目录a,cd.返回目录b,cd.返回根目录WP:,renbnewname将目录b重命名为newnamemen#示内存情况,第一个-3代表根节点占用,第二个3代表文件a占用且下一块盘块下标为3,第三个-3代表目录b占用,之后的4代表被文件a占用且的下一块盘块的寻找下标为4,下一个-3代表文件a的末盘块,下一个-3代表目录b内的目录a占用,dela在根目录WP下删除文件a,mem查看物理盘块实验情况,图中显示原文件a占用的内存空间已经变为-99,代表成功删除a并释放磁盘空间(-99代表磁盘空间空闲可用),dir显示根目录WP下所有文件和目录,显示只有newname则证明重命名和删除操作是成功的。>echo>dlr占用第I Z次物理盘抉aWF= >nsn以下为前加个物理盘块的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西医外科学练习题
- 保洁员初级模拟试题
- 网络安全技术实践测试题
- 浙江国企招聘2025杭州市临安区城市发展投资集团有限公司下属子公司招聘8人笔试参考题库附带答案详解
- 2025福建武夷交通运输股份有限公司招聘10人笔试参考题库附带答案详解
- 2025年黄山旅游发展股份有限公司春季招聘75人笔试参考题库附带答案详解
- 青马试题填空题及答案
- 铲车路障考试题及答案
- 纺织品设计师证书试题及答案汇集
- 固废处理项目前景评估与策略分析
- 金融安全与国家安全
- 酒店装修改造工程项目可行性研究报告
- 基底节脑出血护理查房
- 住建系统专业类法律知识考试试题及答案
- 《系统性红斑狼疮诊疗规范2023》解读
- 【企业盈利能力探析的国内外文献综述2400字】
- 中考语文总复习之汉字书法习题集
- (MC)中线导管的临床应用
- 2024-2030年专用车产业规划及发展研究报告
- 课件:《中华民族共同体概论》第十五讲:新时代与中华民族共同体建设
- DB50T 1426-2023 医疗卫生机构康复辅助器具适配服务规范
评论
0/150
提交评论