- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 1
操作系统课程设计
题目:模拟设计磁盘文件的链接存储结构
班级:
姓名:
学号:
序号
项目名称
考核比重
得分
1
方案设计
10%
2
系统设计
50%
3
系统验收
15%
4
课设报告
25%
总成绩
100%
2020年6月
PAGE
PAGE 1
目录
一、课程设计目的2
二、课题内容2
设计思路3
四、功能介绍6
五、源代码13
六、心得与体会15
第
第 PAGE 1 页 共 NUMPAGES 15 页
课程设计目标
文件系统是操作系统用于明确存础设备(常见的是础盘,也有基于NMAND?Flash?的因态硬盘)或分区上的文件的方法和数据结构:即在存钻设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操织和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分E,负责文件存储并对存入的文件进行保护和伦索的系统。具体地说。它负责为用户建立文件,存入、读出、修改、转然交件.控制文件的存取,当用户不再使用时地销文件等。从而加深对操作系统的理解。
1.了解磁盘文件的管理方式。
2.掌握文件物理结构和存取方式。
3.明晰文件的逻辑地址和物理地址。
课题内容
设计和实现文件存储空间的分配,并完成用户的读写请求:
A、磁盘文件的管理采用显式链接结构,将文件占用的物理块号和链接针
录在一张文件分配表(FAT)中。文件第一块的块号记录在索引结点中。文件
录只记录文件名和索引结点的编号。索引结点的结构如下:
索引结点编号
文件属性
创建时间
文件第一块块号
文件占用盘块数
备用
B、假定磁盘存储空间共有100个物理块用于存放数据, 目录文件和索引
点可直接访问,不存放在这100个块中。
C、一个物理块可存放3个文件逻辑记录,并且假设文件逻辑记录定长。
D、用键盘输入的方式模拟用户读写请求,输入格式如下:
Create(filename)
Write(filename, text, logical_record_no)
Read ( filename, logical_record_no)
(其中filename是要读写的文件名,text是写入的内容,logical_record_no 是逻辑记录号。)
设计思路
创建文件(create):
在当前目录里创建文件,在内存中找到空闲文件块来存放用户文件信息,新创建的文件的状态默认为关闭,同时更新位示图和索引表。
删除文件(delete):
在目录中找到要删除的文件的目录项,使之成为空项,回收该文件所占用的存储空间。
打开文件(open):
在当前目录进行操作,根据文件名,在索引表里找到该文件的物理块号,然后找到该文件的信息,将文件的状态设为打开。
关闭文件(close):
在当前目录进行操作,根据给出的文件名,在索引表里找到该文件的物理块号,根据块号找到该文件信息,若此文件当前状态是打开则将该文件的状态设为关闭。否则,输出“当前目录没有要关闭的文件”。
读文件(read):
在当前目录进行操作,根据文件名,检测文件是否已经打开,若文件已经打开则将文件的信息显示到屏幕上。
写文件(write):
在当前目录进行操作,根据文件名。检测文件是否打开,若已经打开,用户输入完成后,使用CTRL+D,结束输入,系统将用户的输入内容,保存到相应的文件块(小心越界情况)。
源代码
#includeiostream.h#include?math.h#includeiomanip.h#includestring.h#includefstream.hint?i=0,j=0,sum=0,tt=0,r,ii,k,g,m;int?a[100][32];class??file//文件类{private:int?no;??//文件编号char?name[10];??//文件名public:int?tag;??//删除标记?1:已删?0:未删file(?){?}char?*getname(?){return?name;}?//获取姓名int?gettag(?){return?tag;}?//获取删除标记int?getno()?{return?no;}??????????//获取文件编号int?getlength()?{return?length;}??????????//获取文件大小int?getblocknum()?{return?blocknu
文档评论(0)