操作系统实验五-文件系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档