操作系统实验五-文件系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术学院
2018-2019学年第一学期
《操作系统》实验报告
班级: XXXXXXX
学号: XXXXXXXXX
姓名: XXX
教师: XXX
成绩:
1. 题目分析
设计目的
深入了解磁盘文件系统的实现。
设计内容
(1)设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现:
(2)支持多级目录结构,支持文件的绝对读路径;
(3)文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;(4)采用文件分配表;
(5)实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件(追加方式)、关闭文件、改变文件属性。
(6)最后编写主函数对所做工作进行测试。
相关知识概述
(1)文件的操作:①创建文件;②删除文件;③读文件;④写文件;⑤设置文件读/写位置。
(2)文件的逻辑结构:从用户的观点出发所能观察到的文件组织形式,即问价是由一系列的逻辑记录组成的,是用户可以直接处理的数据及其结构。
文件的物理结构:系统将文件存储在外存上所形成的一种存储组织形式,用户不可见。
(3)磁盘空间的管理:采取合理的文件分配方式,为每个文件分配必要的存储空间,使每个文件都能“各得其所”,并能有效减少磁盘碎片。
(4)磁盘目录结构
2. 实验设计
基本设计思路
用一个文件模拟磁盘:
FAT 根
目
录
目
录
1
目
录
2
目
录
3
目
录
4
…文
件
1
文
件
2
…
文件分配表FAT(128B):
第几项0 1 2 3 4 5 6 7 8 9 …
内容-1 -1 -1 4 9 0 7 8 -1 12 …
根目录(64B)
目录1(64B)
目录6(64B)目录
……….
实验中,模拟的磁盘有128块,每块64B,故文件分配表有128项,每项3一个字节,共占磁盘的前两块,盘块编号0、1;根目录紧邻在文件分配表后面,占编号为2的盘块。
0123456789101112
8B8B8B8B8B8B8B8B
文件管理系统要实现的功能包括:
(1)磁盘操作:
①磁盘分配
(2)目录操作:
①建立目录
②显示目录内容
③删除空目录
(3)文件操作:
①建立文件
②打开文件
③关闭文件
④读文件
⑤写文件
⑥删除文件(磁盘回收)
⑦显示文件内容
⑧改变文件属性
⑨使用绝对路径名查找文件
(4)对数据结构——已打开文件表的操作:
①在已打开文件表中查找某文件
②将文件从已打开文件表中删除
③将某文件插入已打开文件表
主要数据结构描述
1、每个目录项的数据结构(8B):
typedef struct
{
char name[3];
开始
找到文件分配表第x项,i=x
第i项值是否为
第i项是否为最后
一项
磁盘满,分配失败
结束
i=i+1分配第i块N
Y
N
Y
图2-10分配一个磁盘块的流程图
结束
查找路径名为pname的文件
i=0
i为已打开文件表一栏
查找成功结束查找失败
i=i+1
文件路径名相
符N
N
Y
Y
图2-13 在已打开文件表中查找某文件
开始
删除路径名为n ame 的文件
在已打开文件表中查找路
径名为n ame的登记项i
找到该文件登记
项
删除第i项:
[i]=openfile[]
=
结束
文件没有打开,
删除失败
N
Y
结束
插入路径名为n ame的文件
在已打开文件表中查找
路径名为n ame的登记项
找到该文件登
记项
已打开文件表已
满
文件登记表满,无法打开文件
结束
在[length]处填写该文件的各项内容:
=+1
文件已打开
Y
N
Y
N
图2-15将某文件插入已打开文件表的流程图图2-14 将某文件从已打开文件表中删除的流程
开始 关闭文件路径名为 name 的文件 查找已打开文件表
文件打开 追加文件结束符
修改目录中文件长度 结束
文件未打开, 无法关闭文件
结束
在已打开文件表中删 除该文件登记项
操作为 “ 写 ”
N
N
Y Y
图 2-20
模拟关闭文件的流程图
开始
读 n ame 文件 l ength 字节
查找已打开文件表
文件打开
文件以读方式打开
从已打开文件表的到读指针 :
将盘块
d um 读入缓冲 b uffer1 文件未打开 , 无法读文件
结束
文件不能读
结束
t=0
文件未结束且 t<=length
显示读出内容; 修改读指针的 b unum: bnum=bnum+1
t=t+1
读完一个盘块
修改读指针 bnum=0;
: dnum= 文件分配表第 n um 项将盘
块 d num 读入缓冲 b uffer1
读文件结束 结束
N
Y
N
N
N
Y
Y
Y