- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验八_模拟文件系统
实验八 模拟文件系统
一、实验目的
建立文件系统需要管理磁盘空闲空间、维护目录结构、组织文件物理空间。本试验通过在一个模拟的磁盘上建立并维护文件系统,熟悉文件系统管理的内容。
二、实验题目
在给出的程序框架中实现以下功能:
建立一个固定大小的文件,模拟磁盘;
在其上模拟Unix文件系统结构,建立一个文件系统。
利用程序框架提供的操作界面,进行文件、目录操作,验证自己实现文件系统的有效性。
三、背景材料
随本实验指导提供了一个压缩文件exp08.tgz,请复制或下载该文件到个人工作目录,用如下命令解开:
tar xzf exp08.tgz
解开后形成两个子目录:minifs和minifat,前者是为本实验提供的程序框架,后者包含一个模仿FAT文件系统实现的miniFAT实现示例。
(一)程序框架
1、文件说明
在minifs目录下的是程序框架,其中包含的文件及其说明如下:
Makefile make命令配置文件;直接输入make命令生成minifs执行文件
disk.cpp 实现模拟磁盘扇区读写操作
disk.h disk.cpp对应的头文件
diskfile.cpp 实现模拟磁盘上的文件系统管理功能,包括空闲空间管理、目录管理、文件物理组织等
diskfile.h diskfile.cpp对应的头文件
file.cpp 实现文件系统功能的外部访问接口(类此于实际OS中文件操作相关系统调用)
file.h file.cpp对应的头文件
info.cpp 提供此程序的版本、命令行提示符等信息
info.h info.cpp对应的头文件
user.cpp 提供程序的命令行操作界面,主要通过调用file.cpp中实现接口完成文件操作
user.h user.cpp对应的头文件
上述文件中,disk.cpp、disk.h、info.cpp、info.h、user.cpp和user.h都可以不做改动;只要分别按照diskfile.h和file.h中规定的接口实现diskfile.cpp和file.cpp的编写,然后使用make命令即可生成可执行文件minifs。
2、需要实现接口
需要实现的接口分别在diskfile.h和file.h文件中定义,在实现中不应该改变接口定义,因为在其他源程序文件中包括按照头文件定义格式对这些功能的调用。此外,在文件中有一些数据结构定义,供实现中参考,可以根据自己设计的文件系统结构进行修改,但是如果在接口参数中用到的数据结构不应修改。
(1)diskfile.cpp和应实现的功能在diskfile.h中定义,接口函数原型声明及简要说明如下:
void ReadBlock(char *buf, short blk);
// usage: reads a block from disk to the buffer
void WriteBlock(char *buf, short blk);
// usage: writes a block to disk from the buffer
short GetBlockBuffer(short block, short noread=0);
// usage: gets a block buffer with content of specified block
// return: on success, returns buffer number; otherwise returns -1
void FlushBlock(short bbuffer);
// usage: flushs the specified block buffer to disk if modified
short GetBlock();
// usage: gets a free block
// return: on success, returns block number; otherwise returns -1
void PutBlock(short blk);
// usage: sets a block to free
short AttachBlock(struct MemInode mi);
// usage: attaches a new block to a i-node
// return: on success, returns new block number; otherwise returns -1
short GetFileBlock(const struct MemInode mi, short rblk);
// usage: gets physics block number from logical block of file
// retu
您可能关注的文档
- 荆州2015年中考英语模拟试卷(一)及答案.doc
- 我的沪江学游记录5.doc
- 必修四第五单元单元检测.doc
- 四级阅读各类题型解析.doc
- 2015-2016学年初三第一次月考英语试卷.doc
- 电子行业面试题总结.doc
- 李 智 翻译技巧.doc
- 小升初副词的专项练习.doc
- 辽大 商法 供参考.doc
- 东区联校2016年下期九年级英语月考试卷.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)