1
第八章文件系统
程序和数据以文件的形式保留
在外存中。本章主要讨论文件的组
织结构,共享与保护以及文件系统
空间管理。
操
作
系
统
|
文
件
系
统
2
CUIT 徐虹
8.1文件系统的概念
?文件系统的引入
?软件资源
?软件资源:各种系统程序,以及标准子程
序库和应用程序,数据。
?软件资源都是一组相关联的信息(程序和
数据)的集合。
?引入文件系统的原因
操
作
系
统
|
文
件
系
统
3
CUIT 徐虹
?文件系统的功能
?实现按名存取
?文件的物理结构
?文件信息的检索
?文件的共享和保护
操
作
系
统
|
文
件
系
统
4
CUIT 徐虹
?文件及文件系统
?文件
?数据项
?记录:一组相关数据项的集合。
?文件:文件是一个具有符号名字的
一组相关联元素的有序集合。
操
作
系
统
|
文
件
系
统
5
CUIT 徐虹
?文件的类型
?按文件的性质和用途分为:系统文件,
库文件,用户文件
?按组织形式分为:普通文件,目录文件,
特殊文件
?按文件的保护方式:只读文件,只写文
件,可执行文件。
操
作
系
统
|
文
件
系
统
6
CUIT 徐虹
?文件系统
?OS中负责管理和存取文件信息的软
件机构。负责文件的建立,撤消,存
入,读写,修改和复制,还负责完成
对文件的按名存取和进行存取控制。
?使用文件系统的优点
?使用的方便性
?数据的安全性
?接口的统一性
2
操
作
系
统
|
文
件
系
统
7
CUIT 徐虹
?文件系统的模型
?对象及其属性说明:文件、目录和磁
盘存储空间。
?软件集合:I/O控制层、基本文件系
统、基本I/O管理程序和逻辑文件系
统。
?文件系统的接口:命令接口和程序接
口。
操
作
系
统
|
文
件
系
统
8
CUIT 徐虹
操
作
系
统
|
文
件
系
统
9
CUIT 徐虹
操
作
系
统
|
文
件
系
统
10
CUIT 徐虹
?文件操作和使用
?对记录的操作
?对文件的操作
?设置和修改用户对文件的存取权限
?建立,改变和删除目录
?文件共享和设置访问路径
?文件的创建,打开,读写,关闭和删除和
设置读/写位置
操
作
系
统
|
文
件
系
统
11
CUIT 徐虹
8.2文件的逻辑结构
?文件的逻辑结构(文件的组织):
从用户角度看到的文件的全貌,也
就是它的记录结构。
?文件的物理结构(文件的存储结
构):文件在外存上的存储组织形
式。
操
作
系
统
|
文
件
系
统
12
CUIT 徐虹
?逻辑结构的类型
?选取文件的逻辑结构应遵循的原则:
?修改时少变动
?便于查找
?占据最小的存储空间
?便于用户操作
?流式文件
?它是有序字符的集合,文件长度等于该文
件所包含的字符数。
3
操
作
系
统
|
文
件
系
统
13
CUIT 徐虹
操
作
系
统
|
文
件
系
统
14
CUIT 徐虹
?顺序文件
?连续结构:按记录生成的先后顺序连续排
列的逻辑结构。
?顺序结构:把文件中的键按规定的顺序排
列起来。
操
作
系
统
|
文
件
系
统
15
CUIT 徐虹
操
作
系
统
|
文
件
系
统
16
CUIT 徐虹
?索引文件:把记录按键和记录名排列成
行列式结构
R1 R2 …… Rn
K1 1 0 …… 1
K2 0 1 …… 0
……
Km 1 1 …… 1
1:键Ki在记录Rj 中0:不在
操
作
系
统
|
文
件
系
统
17
CUIT 徐虹
以键Ki 为队首,以包含键Ki 的记录为队
列元素来构成一个记录队列。
K1——>Ri——>Rj——>Rk——>……
K2——>Rl——>Rm——>Rn——>……
……
Km——>Rx——>Ry——>Rz——>……
操
作
系
统
|
文
件
系
统
18
CUIT 徐虹
把含有相同键的记录指针全部指向该键,适
合于给定键后的记录搜索。
K1
Ri
含K1的记录指针Rj
Rk
……
4
操
作
系
统
|
文
件
系
统
19
CUIT 徐虹
?索引顺序结构
操
作
系
统
|
文
件
系
统
20
CUIT 徐虹
?存取方法
?顺序存取法
?记录的读写
?定长:
? Read(F,M,rptr,L);rptr=rptr+L;
? Write(F,M,wptr,L);wptr=wptr+L;
?不定长:
? Read(F,T,rptr,1);rptr=rptr+1;
? Read(F,M,rptr,T);rptr=rptr+T;
? Write(F,M,wptr,T+1);
ptr=wptr+T+1;
操
作
系
统
|
文
件
系
统
21
CUIT 徐虹
?直接存取法(随机存取法)
?允许用户随意存取文件中的任一记录,
根据记录的编号或地址。
?流式文件
?定长记录文件:
?变长记录文件采用索引表的组织
操
作
系
统
|
文
件
系
统
22
CUIT 徐虹
?按键存取法
?文件的存取是根据文件内容而不是记录的
编号或地址。首先搜索到记录的逻辑位置,
再将其转换到相应的物理地址后进行存取。
?线性搜索法
?散列法(hash法)
?二分搜索法
操
作
系
统
|
文
件
系
统
23
CUIT 徐虹
8.3文件目录管理
?一个文件的说明信息称为该文件的目录。
用户向系统提供符号名,系统根据文件
的符号名找到它的物理地址。
?功能:实现文件的按名存取,实现符号
名与具体物理地址之间的转换,文件的
共享和保护。
操
作
系
统
|
文
件
系
统
24
CUIT 徐虹
?文件控制块和索引结点
?文件的组成:文件说明(FCB)和文件
体。FCB即为文件的目录。
?文件控制块(File Control Block)
?基本信息
?存取控制信息
?使用信息
5
操
作
系
统
|
文
件
系
统
25
CUIT 徐虹
?索引结点
?文件目录的缺陷
?索引结点的引入
?目录:文件名和指向I结点的指针
?i 结点:文件描述信息。
操
作
系
统
|
文
件
系
统
26
CUIT 徐虹
?磁盘索引结点:每个文件有唯一的磁盘索
引结点。
?文件主标识
?文件类型
?文件存取权限
?文件物理地址
?文件长度
?文件连接计数
?文件存取时间
操
作
系
统
|
文
件
系
统
27
CUIT 徐虹
?内存索引结点
?索引结点编号
?状态
?访问计数
?文件所在设备的逻辑设备号
?链接指针:空闲链表、散列队列指针
操
作
系
统
|
文
件
系
统
28
CUIT 徐虹
?单级目录
?目录内容
?文件访问过程
?创建和删除文件
?存在的问题
?重名问题:
?别名问题:
?文件数量过多时,查找效率低。
操
作
系
统
|
文
件
系
统
29
CUIT 徐虹
?两级目录
?结构:系统由主目录(MFD)和用户
目录(UFD)构成。
?文件的查找
?文件的建立
?文件的删除:
操
作
系
统
|
文
件
系
统
30
CUIT 徐虹
?树型目录
?多级树型目录结构
?文件路径名
?工作目录
?增加和删除目录
?特点
6
操
作
系
统
|
文
件
系
统
31
CUIT 徐虹
操
作
系
统
|
文
件
系
统
32
CUIT 徐虹
操
作
系
统
|
文
件
系
统
33
CUIT 徐虹
?目录的查询技术
?过程
?根据文件名找到其FCB或索引结点;
?查找FCB或索引结点中的文件物理地址(盘块
号),换算为物理位置;
?启动磁盘驱动程序,将文件读入内存。
?检索方法
?顺序查找法:
?二分查找法:
? Hash 法:
操
作
系
统
|
文
件
系
统
34
CUIT 徐虹
8.4文件共享
?早期共享方法
?绕道法
?链接法
?一个目录中的表目直接指向另一个目录
表目。
?在FCB 中必须增加“连访属性”和“用户
计数”项。
操
作
系
统
|
文
件
系
统
35
CUIT 徐虹
?基本文件目录表
?把文件目录的内容分为两部分,符号
文件目录(SFD)和基本文件目录
(BFD)。
?系统通常预先规定赋予基本文件目录
(0),空白文件目录(1),主目
录(2)(符号文件目录)固定不变
的唯一标识符。
操
作
系
统
|
文
件
系
统
36
CUIT 徐虹
?文件的查找过程:
?读出ID=2的BFD表目,确定MFD 的物理
位置;
?读出MFD,并查寻与路径名匹配的ID;
?根据ID 值,读出BFD的相应表目,确定
SFD的物理地址;
?读出SFD,查找与文件名匹配的ID;
?根据此ID,读出BFD的相应表目,确定该
文件的物理地址,对于SFD是利用符号名
来查找匹配表目的,即按键存取。
7
操
作
系
统
|
文
件
系
统
37
CUIT 徐虹
?共享某个文件,只需给出被共享的
文件名,系统自动在SDF的有关文
件处生成与共享文件相同的内部标
识符。
操
作
系
统
|
文
件
系
统
38
CUIT 徐虹
?基于索引结点的共享方法
?树型目录中文件共享的问题
?用索引结点实现文件共享
?指向相同的索引结点
?链接计数器count
?文件共享的过程
操
作
系
统
|
文
件
系
统
39
CUIT 徐虹
?利用符号链实现文件共享
?实现
?B共享C的文件F,由系统创建LINK类型
的新文件,它包含被F的路径名(符号
链),并写入B的用户目录中。
?只有文件主才拥有指向索引结点的指针。
?问题
?访问速度慢;链接文件也要建立索引结
点;同一文件有不同的文件名。
操
作
系
统
|
文
件
系
统
40
CUIT 徐虹
8.5 文件存取控制
?文件保护
?文件保护机构的功能
?存取验证模块的基本任务
?审定用户的存取权限;
?比较用户存取权限和本次存取要求;
?比较本次存取要求和被访问文件的存取保
护信息。
操
作
系
统
|
文
件
系
统
41
CUIT 徐虹
?访问(存取控制)矩阵
?实现方法
?用一个二维矩阵来实现存取控制,一维是
所有的用户或进程,另一维列出全部文件。
每个元素表示某一用户对某一文件的存取
控制权限。
操
作
系
统
|
文
件
系
统
42
CUIT 徐虹
8
操
作
系
统
|
文
件
系
统
43
CUIT 徐虹
?存取控制表
?把有存取要求的用户按某种关系或工程
项目的类别分为若干组,同时规定每组的
存取权限,得到文件的存取控制表。
操
作
系
统
|
文
件
系
统
44
CUIT 徐虹
操
作
系
统
|
文
件
系
统
45
CUIT 徐虹
?访问权限表
?以用户或用户组为单位建立存取控制表,
称为用户权限表。将一个用户(组)所要
存取的文件名集中起来存入一张表中,每
个表目指明用户对相应文件的存取权限。
操
作
系
统
|
文
件
系
统
46
CUIT 徐虹
操
作
系
统
|
文
件
系
统
47
CUIT 徐虹
?分级安全管理
?系统级
?防止用户非法进入系统:注册、登录等。
?用户级
?用户分类
?文件主、伙伴和一般用户。
?超级用户、系统操作员、用户和顾客。
?文件访问权限:建立(C)、删除(D)、打开(O)、
读(R)、写(W)、查询(S)、修改(M)和父权(P)。
操
作
系
统
|
文
件
系
统
48
CUIT 徐虹
?目录级
?只有系统核心具有写目录的权利。保护系
统目录,与用户权限无关。
?文件级
?通过对文件属性的设置,来控制用户对文
件的访问(用户访问权、目录访问权和文
件属性)。
9
操
作
系
统
|
文
件
系
统
49
CUIT 徐虹
8.6多层次文件系统
?把文件系统的各功能用一系列软件
级来加以描述。层次结构中的每一
级只依赖于它下面的级,且在其下
面的基础上提供更灵活更方便的机
能。
操
作
系
统
|
文
件
系
统
50
CUIT 徐虹
?用户接口
?对系统调用命令进行语法检查;
?改变为内部调用格式,以便调用SFS;
?补充用户未给出而系统可提供的信息,存入
工作单元;
?使系统初始化。
?符号文件系统(SFS )
?把用户提供的文件名转换为系统内部的唯一
标识符。
操
作
系
统
|
文
件
系
统
51
CUIT 徐虹
?基本文件系统(BFS )
?根据ID查找所需文件的文件说明。包括存取
控制表,文件逻辑结构,物理结构及第一个
物理块地址。
?存取控制验证(ACV )
?实现文件保护,确定访问的合法性
?逻辑文件系统(LFS )
?根据文件的逻辑结构信息,通过逻辑字节串
首址的计算,把对逻辑记录的请求转换成对
文件相对块号的请求。
操
作
系
统
|
文
件
系
统
52
CUIT 徐虹
?物理文件系统(PFS )
?把存取记录所在的相对块号转换成物
理块地址;把系统缓冲区中的记录搬
到用户缓冲区;与设备策略和分配策
略模块通讯。
?分配策略模块(ASM )
?负责记住每个存储设备上的空白块情
况。管理空白文件目录(FFD),并
负责进行分配回收。
操
作
系
统
|
文
件
系
统
53
CUIT 徐虹
?设备策略模块(DSM)
?把物理块号转换成相应设备所要求的
地址格式。
?I/O 调度和控制系统
?实现所有I/O请求的排队,调度,启动,
I/O操作的控制,完成把物理块记录从
文件所在的设备传输到系统缓冲区。
操
作
系
统
|
文
件
系
统
54
CUIT 徐虹
小结
?文件系统的概念
?文件的逻辑结构和存取方法
?文件目录
?文件的共享和文件的保护