收藏 分销(赏)

模拟文件系统实验报告.docx

上传人:天**** 文档编号:4356403 上传时间:2024-09-12 格式:DOCX 页数:17 大小:988.25KB
下载 相关 举报
模拟文件系统实验报告.docx_第1页
第1页 / 共17页
模拟文件系统实验报告.docx_第2页
第2页 / 共17页
模拟文件系统实验报告.docx_第3页
第3页 / 共17页
模拟文件系统实验报告.docx_第4页
第4页 / 共17页
模拟文件系统实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、操作系统大型试验实验报告姓名:XX班级:软件工程0x学号:201663xx一、名称 操作系统大型试验。二、目得用C+编写出一个简单得模拟文件系统,实现目录得添加、删除、重命名,文件得添加、删除、重命名、文件与目录、文件得拷贝。三、要求开发工具:word,v win32ai1、设计与实现一个简单得文件系统,要求包括目录、普通文件与文件得存储2、文件系统得目录结构采用类似Lnux得树状结构;3、要求模拟得操作包括:a)目录得添加、删除、重命名;b)目录得显示(列表)c)文件得添加、删除、重命名)文件与目录得拷贝4、用户进入时显示可用命令列表;用户输入hp时显示所有命令得帮助文档; 输入某个命令?时

2、显示该条命令得使用说明5、用户输入ext时退出该系统6、实验实现基于winws平台;7、实验开发语言可以选用Cc+等四、设计、主要思路说明本模拟系统通过一个大小固定得数组要代表物理盘块,假设共有12块,新增目录占一块,新增文件占一块,文件中可输入内容,内容假设定义为5个字符占一块,超出则应新申请空间。模拟物理盘块得数组中,数组内容为-9代表改物理盘块内容为空,可使用,其她数字均代表该物理盘块被占用,其中-3代表就就是占用文件得末结点,其她整数代表就就是文件内容得下一个寻址下标,另有一个strig类型得数组来存储内容,模拟文件写入了对应下标得物理盘块中。设置了一个全局指针指向根结点,一个全局指针

3、指向当前操作目录。搜索空白物理盘块时采用顺序搜索物理盘块数组。存储形式主要采用类似二叉树结构,如目录为根,目录下得第一个文件或目录存在根得子节点,目录下得其她文件或目录存在第一个文件或目录得兄弟节点,以此类推。本程序仅seperate()函数使用现成代码,此函数功能为将输入命令串分离,仅仅起到美观作用,其余所有代码均为原创!2、申优功能:1)能实现动态增长,即当输入文件得内容大小大于分配得模拟物理盘块时系统能够自动寻找空物理盘块并分配,将超出得内容保存在新得物理盘块中,若超出模拟磁盘大小,则超出部分不保存且返回提示。)能实现级联删除,即当删除目录(文件夹)时,目录下得所有内容也应当删除并正确释

4、放物理盘块空间。3)能实现目录得复制,即复制目录时(文件夹)时,该目录下得所有文件与目录也应准确复制至目标目录中,并正确分配物理盘块空间。、主要函数与类得定义1)主要函数定义 defin sobnm 20/显示物理盘块得块数define ock_size 104/物理盘块块数it bloclck_sze;/假设有bocksize块物理盘块strigonttock_size;/存放文件内容int size5;/此处为模拟磁盘大小为输入个字符fnod *root=nw fnode(P:,0,); /设置根目录fnde urren_pth=n fode();/当前路径fnode *s_lgewfde

5、();作为查找标志node*lag=n foe();/作为复制得位置标志id itialie();/初始化int karget(tring name);/搜索文件或目录i ek_lg(stringnme);/搜索目录viddlet_nde(sring name);/删除节点ntfreblck(node*);/释放物理盘块nt seefreeblck();/搜索可用物理盘块voidhowcrretath();/显示当前路径oid add_ name,int t);增加目录、文件vi hocurpatall();/显示当前目录下得所有文件vid renam_ Oe,ring Nname);/重命名

6、viseerate();/分离命令vo cd();/进入目录id ad_ie();/增加文件功能入口oid add_Log();/增加目录功能入口oid detefile();/删除文件或目录功能入口oi shwmmor();显示物理盘块占用情况voidrename();/重命名功能入口id hlp();/查瞧帮助vod show_conent();/查瞧文件内容vod writeile();/写文件vidCear_();/清屏voi x();/退出vo cp();/复制功能入口oidcp_l(fnode *trget,fnod*surce);/复制目录oid c *tat,node sour

7、ce);/复制文件void_nde(noe *trget,fnode *surc);/复制节点int fin_get_log();/找到复制得目标目录itcalclate_lgsizean(node);/计算目录大小int cala_logsie(fo*);2)文件节点类得定义:class fod public: srin ;/文件名 ittype;/文件类型,1为普通文件,0为目录文件 fde *ent;/父节点 node *child;/子节点 fnd*brohr;/兄弟节点 t block_um;/表示占用得物理盘块块号 int isBo;/表示就就是否就就是在同级目录下,表示不就就是,

8、1表示就就是 int sCl;/就就是否为目录下第一个节点,1表示就就是,表示不就就是 fnde()/初始化 t1; pentNLL; child=L; brothe=NLL; lc_nu=-1; isBo=; isCld=0; fnde(sring n,int t,in b)/根节点初始化 type=t; n; paret=NL; cild=NUL; brother=NULL; block_nm=b; ocbock_um=3; isBr0; iCld=0; fno(fode*,sng ame,int ,intb) 文件节点初始化 parntp; me; type; hild=ULL; bro

9、terNULL; lock_n=b; okblock_nm=-3; isr0; ild=0; void oy(fod cp) /拷贝函数 p-; type=cp-type; aret=cpparet; chil=cp-chid; brorcp-broher; lok_n=cp-blck_um; ;、命令:命令解释echoho命令可以在当前目录下创建一个文件,具体格式:echo+nammdmd命令可以在当前目录下创建一个目录文件,具体格式:md+aelde命令可以在当前目录下删除一个已存在得文件或目录(支持级联删除),具体格式:delneccd命令可以进入下一级目录或返回上级目录、根目录,具体格

10、式:cd+nme或cd+、或d+、cpcp命令可以复制当前目录下一个指定得文件或目录至指定得目录,具体格式:cp+nam+raiir命令可以显示当前目录下得所有文件与目录,具体格式:deeren命令可以重命名一个存在于当前目录下得文件或目录,具体格式:ren+nam +newmetyptyp命令可以查瞧当前目录下一个文件得内容,具体格式:typ+namewrtwrt命令可以在当前目录下写内容至一个已存在得文件,具体格式:wr+ae +cnentmemmm命令可以查瞧模拟物理盘块得使用情况,具体格式:memclscl命令为清屏命令,具体格式:clseiexit命令为退出命令,具体格式:exit五

11、、关键技术流程图及说明提示:若图中文字无法瞧清,可用Miosoft s打开压缩包下“部分程序流程图”文件夹得绘图文件查瞧。1、增加文件或目录(此功能比较简单,流程图写得较详细就不做说明):2、删除目录(实现级联删除):说明:删除目录时删除文件与删除目录本身放在同一个函数中,删除目录下得所有文件放在reeck函数里,这样比较好处理。下面给只给出递归函数得流程图。3、将内容写入文件(实现动态增长):说明:图中Msize为模拟规定得文件块字符串大小,比如Msiz=5,那么一个物理盘块只能存5个字符,超出则要申请新得空间。主要采用双重循环方法写入,外层循环为需要得块数,内层循环为Msie,用trg累加

12、字符串内容,内层循环退出后新申请一个空间并将对应下标赋给上一个物理盘块数组,再将对应内容存入content(为strin类型得数组,模拟存储内容)数组中,直至退出外层循环。4、复制目录:说明:这里与删除目录一样,写了两个复制函数,这样写同样因为递归调用就就是比较方便,第一个函数传入参数为目标目录指针与被复制得目录得指针,第一个函数里新建了一个阶段复制被复制得目录得内容,然后将新建节点得子节点与被复制目录得子结点传入下一个递归调用函数(因为目录得内容存于目录得子节点,与兄弟节点无关),第二个函数就就就是递归调用函数o,下面就只给出cp_od得流程图(复制之前同样进行了路径得判误操作,内存大小得判

13、断操作,就就是否重名得判断操作,被复制目录就就是否存在判断操作,这些操作在递归函数之前完成,所以下面得递归函数不体现这些操作)。六、运行结果、主界面展示:图:主界面展示2、lp命令展示:图:help命令展示 3、echo命令展示: 图:echo命令展示 4、del命令展示:图:el命令展示-普通删除 说明:创建了目录lo,在og中创建一系列文件与目录,磁盘使用情况显示已分配,实用el删除命令后查瞧磁盘分配证明级联删除就就是可靠得。图:de命令展示级联删除5、md命令展示:图:命令展示、d命令展示: 说明:图中展示了cd+ame、cd+、cd、三种d命令得使用与判别情况。图:d命令展示 、i命令

14、展示:图:ir命令展示 、tp命令展示:图:y命令展示 9、en命令展示:图:re命令展示 1、wrt命令展示:图:wrt命令展示说明:此处为了实验方便,将磁盘大小限定为,每块磁盘输入得字符数限2,输入得内容112244556778899需要9块磁盘块,而磁盘块为5,根目录占用一块,只能输入4块大小得内容,即,所有文件fie只写入了1122334 。图:r动态增长展示 11、me命令展示:图:mem命令展示 1、cs命令展示:图:cl命令展示-1图:cls命令展示-2 1、cp命令展示:说明:图中根目录(WP:)下创建了目录a(da)、目录b(db),在目录下创建了b目录(d b),在b目录中

15、创建了文件a(ehoa)、目录c(d ),文件a中输入111112222(wrt a 111122)内容代表占了两块物理盘块(程序中Msize模拟大小,设为5个字符了),再进入目录c(cd),c中先创建目录f(md )再创建文件g(与之前创建顺序不同说明程序在不同情况下能正常运行),在中输入5个,5个2,5个1(rtg 332211111)代表占用3块物理盘块空间,再返回目录(cd 、 d、),将目录a下得目录b复制给目录WP下得目录c(p b :c),再将目录a中得目录b删除(dl b证明得确就就是复制而非简单指针指向),进入WP下得目录查瞧刚复制得内容(i)。物理盘块使用情况中第一个-3为

16、根目录占用,第二个-就就是目录a,第三个-3就就是目录,接下来得8个-9就就是目录a中原目录b占用得空间(此处证明删除就就是可靠得),图中显示目录c中确实成功复制了目录及目录下得所有内容(使用dir命令查瞧)。图:p命令展示14、exit命令展示:图:ext命令展示 15、综合展示:说明:h a在根目录(WP:)下创建了文件a,md b在根目录(WP:)下创建了目录,ir显示根目录下得所有文件与目录,r a aaabbbcccc在文件中输入了一串内容,y a显示文件a中得内容,cd b进入目录b,m a在目录下创建了目录,cd a进入目录a,c 、返回目录b, 、返回根目录WP:,en bew

17、name将目录b重命名为ewme,mem显示内存情况,第一个-3代表根节点占用,第二个3代表文件a占用且下一块盘块下标为,第三个-3代表目录b占用,之后得4代表被文件占用且得下一块盘块得寻找下标为4,下一个-3代表文件a得末盘块,下一个代表目录b内得目录a占用,del a在根目录P:下删除文件a,mem查瞧物理盘块实验情况,图中显示原文件a占用得内存空间已经变为99,代表成功删除a并释放磁盘空间(-9代表磁盘空间空闲可用),dir显示根目录WP:下所有文件与目录,显示只有newname,则证明重命名与删除操作就就是成功得。图:综合展示七、心得体会与调试中遇到得问题及解决办法编写调试过程中遇到许

18、多问题,一类就就是指针指向空还继续操作造成程序停止运行,经检查后修改正确,一类就就是逻辑上出现错误导致级联删除或者目录复制出错,经改正后成功实现。主要得难点在于兄弟结点与子结点得处理,所以再程序中引入了iro这个标志位来判断就就是否就就是兄弟结点即与父节点就就是否在同级目录,若不在同级目录则父节点为真父节点(就就是指向本目录而非本目录中上个文件)。还有一个难点就就是在进行递归调用删除或复制目录时发现处理目录与目录下得内容不太合适放在同一个递归程序中,所以单独写了两个函数处理目录得复制或删除,然后对应两个递归程序处理目录下得所有内容。实验总结及有待改进得问题。因为时间比较紧张,在几门考试中抽空写了这个小程序,所以并没有实现存盘,另因为对输入命令字符串得处理上有点瑕疵,所有在写文件内容中只能写入连续得字符串(中间不能插入空格),否则会被判定为命令输入错误,并且只实现了文件得写入,不能修改或插入,有待改进。没有实现目录树得展示,只能显示目录下所有文件,有待改进。但相信时间再充裕一些这些小问题都能很好地解决。八、源代码在压缩包内“源代码”文件夹内。

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服