- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计之三
设计任务:模拟OS文件系统
在任一 0S( Window或者Dos;也可以是在Linux下,但要求能将结果演示给老 师看)下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟 OS
文件系统。
1、 在现有机器硬盘上开辟10M(共10000个盘块,每盘块大小为1k)的硬盘空间
(生成一个10M的用户文件SDisk.dat即可),作为设定的硬盘空间。
2、 编写一管理程序SDisk,对此空间进行管理,以模拟 OS文件系统,要求:
⑴、盘块大小1k
⑵、空闲盘块的管理:采用位示图法
⑶、文件空间管理:采用FAT(文件分配表),每个盘块号占2个字节
⑷、目录项管理:
、每个目录项占用32字节,其中前8个字节(0-7)为文件名,之后跟3个字节
(8-10)的扩展名, 26-27 字节,存放文件的第一个盘块号,最后四个字节 (28-31 ),存放文件长度(如果目录项对应的是下一级子目录(文件) ,其文件 长度部分为 0)
、目录按文件方式管理,每个 目录仅用一个盘块(即1k,最多装32个目录项)
、第0个目录项为本目录,即“ ? ”,第0个字节为“ ? ”,即0x2E,第26-27字
节指明本目录所在盘块。
、第1个目录项为父目录,即“ ”,第0, 1个字节为“”即0x2E,0x2E,第
26-27 字节指明父目录所在盘块。
、每个目录实际能放下文件或子目录 30项。
⑸、文件系统空间分配:
、第0个盘块(1k)存放磁盘信息(可以设定为格式说明“ FAT32、盘块大小,盘块数等
内容)
、第1个盘块起,至125盘块,共125个盘块(125k)存放FAT内容
、第126、127 (2个)盘块,存放位示图
、从第128盘块至10000盘块,皆为数据(区)盘块,其逻辑编号从 0开始,至
9872号数据盘块,即第0数据盘块为128号盘块,第1数据盘块为129号盘块,…
、 第 0 数据盘块 (即 128号盘块),存放根目录 (同样只用一个盘块作根目录) ,
由于第 0、 1 目录项为“ . ”(本目录) , “.. ”(父目录),因此根目录下同
样只能存放 30个文件或目录,并且从第 2 个目录项开始。
、文件或子目录数据,放在第1数据盘块及以后的数据盘块中,由用户按需要使 用。
3、 SDisk 管理程序的功能要求如下:
⑴、正常情况下,显示等待命令输入符号 #
⑵、改变目录命令:
#cd 目录名,改变当前工作目录,目录不存在时给出出错信息
#cd .. ,返回上一级目录,如果是根目录,给出提示信息
⑶、生成新目录
#md目录名,创建新目录(需要更改 FAT内容和位示图内容)
⑷、删除目录
#rd目录名,删除目录,如果目录不存在时给出出错信息(需要更改 FAT内容
和位示图内容)
⑸、显示目录
#dir ,显示指定目录下或当前目录下的信息,包括文件名、扩展名、物理地址 (文件或目录第一个盘块号) 、文件长度、子目录
⑹、创建新文件
#CreateFile 文件名 .扩展名 文件长度, 根据文件名 .扩展名, 创建一个目录项
(fcb ),根据文件长度和位示图中空闲盘块情况,分配足够多的 连续盘块,给新文 件(需要更改FAT内容和位示图内容)。
⑺、删除文件
#DelFile 文件名 .扩展名,在文件所在的目录项中,将第一个字节变为 0xE5,
并同时修改FAT内容和位示图内容;如果文件不存在,给出出错信息
⑻、文件拷贝
#CopyFile 老文件,新文件, 为新文件创建一个目录项, 并将老文件内容复制到 新文件中,并同时修改FAT内容和位示图内容
⑼、显示位示图内容
#ShowBitMR将位示图内容(已有信息部分),显示在屏幕上(按十六进制)
⑽、显示FAT内容
#ShowFAT将FAT内容(已有信息部分),显示在屏幕上(按十六进制)
4、 程序的总体流程为:
⑴、输出提示符#,等待接受命令,分析键入的命令;
⑵、对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令 (1请参考“ 03.FAT32文件系统简介.doc ”中,有关文件系统的规定;
2、请参考Win Hex中,目录所显示的信息进行编程)
//关于FAT和MAP表的解释
II用bitset库,做MAP勺是否判断,因为作业要求从数据块从 128位开始,所以 bitset的前128位被置为-1,同样FAT表也是,其次,MAP表和FAT表同样是用数 组方式做保存,这样就略过了是对具体地址的操作,从数组的下标很容易的定位, 关于对FAT表和MAPg的用法
1.当要用到数据块是,查询 MAP表(因为只做比较查询即可),查询到的未用位置 置1,然后在FAT表上进行相应记录,在本程序做出的规定是,当文件夹 FAT
表做-1,若是文件则按照FAT做对应
文档评论(0)