- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计
学 院:信息科学与工程学院
专 业:
班 级:学 号:
学生姓名:小秉指导教师:
2014 年 3 月 日
一、实验内容
模拟文件系统
[问题描述]
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的小型文件系统。
[基本要求]
该小型文件系统没有子目录机制,文件连续分配,不考虑分区。
做一个简单的操作界面,提供四条简单的命令:简单的ls、cat、cp、rd.
进一步增强:文件系统功能:文件系统不连续分配,可以有子目录机制,(如两级子目录机制)。二、数据结构设计{
char file_name[50]; //文件名
int file_length; //文件大小
char dir_name[50]; //文件所属文件名
FileType file_type; //文件类型
int file_addr; //文件储存首地址
int flag; //标志位,文件是否存在
}root[16384]; //定义文件表
2. 物理地址块数据结构
struct Block //物理地址块数据结构
{
int isUsed; //正在使用为1,没被使用为0
int flag; //标志位,-1表示文件地址连续,0 ~ 16384表示下一块地址
}block[128][128]; //使用位示图储存文件
三、算法设计(总体设计及模块设计)
通过用户指令执行相应的操作
2. 模块设计
①菜单及输入输出模块:采用while循环方式,输入quit指令终止操作,获取用户输入的指令(不同的指令有不同的格式,调用不同的函数)执行完成后进入下一次循环
②指令设计:
format,与windows格式化命令相似,将所有清空,初始化 ls:当前系统的信息总容量,剩余容量和版权信息。 lm:打印当前目录下所有文件和文件夹信息 cat:查看指定文件或者文件夹的大小和信息指令格式: cm:在当前目录下创建一个文件夹,指令格式: + 文件夹名
cf:在当前目录下创建一个文件指定文件名和文件大小cf + 文件名 + 文件大小
rd:删除当前目录下的一个文件或者文件夹指令格式:rd + cd:进入当前一个文件夹,指令格式:cd + cp:copy指令,将指定文件路径下的文件拷贝到另一个文件目录下,指令格式:cp + 的路径名名 help:帮助,显示帮助 quit:退出系统命令
cls:清屏
③创建文件算法设计:用户输入的文件遍历文件表当前路径下是否有重名文件,若有则若无则可以创建在文件夹中加入一条记录,的文件信息,创建成功。 ④删除文件算法设计:用户输入的文件名遍历文件表,查找文件是否存在,若不存在,则删除操作失败文件存在则查看是否是一个文件目录,若是文件目录则查找文件目录下是否存在其他文件或文件夹,一并从文件列表中删除。
,则直接删除。
⑤文件拷贝操作:首先检验用户输入的源地址和目标地址是否正确,查看文件是否存在,若校验,则输入错误信息,拷贝操作结束。若都,在文件列表中添加文件信息,若是文件夹,也将目录下所有文件拷贝一份到目标地址。四、测试数据及程序运行情况
1.:
2.数据:总容量:KB,初始化后根目录文件占用KB,剩余KB,此时查看系统信息:
根目录admin”下创建如下及文件夹
容量:
:– 200 – 321 – 4 * 4 = 15847 正确
查看根目录下文件夹file_B的信息::cat file_B
在admin下创建文件夹一个文件夹输入指令
再次查看目录信息:
文件夹已经在列表中了
一个doc输入指令:600”
删除文件夹file:输入指令rd file”
删除文件doc,输入指令:rd doc”
查看删除前容量
:
:
目录
: file_B”
返回上一层:输入指令
将文件夹file_B底下的doc_Afile_C下,输入指令:
清屏操作:
显示帮助菜单:输入指令help”
在目录file_B下创建目录file在file下创建文件f,大小KB
将file_B下的file拷贝到file_C:输入指令:cp admin/file_B file admin/file_C”
就得到文件目录file连同文件f一块复制到file_C目录下
五、实验过程中出现的问题及解决方法
:上一次目录,在文件系统中需要路径的名称:“admin/…”,无法实现,最终解决办法:字符串数组储存下文件目录名,在返回上一层菜单,调用文件cutString)在cutString()将当前文件路径名减掉当前文件目录名,将文件列表中新添加的文件
文档评论(0)