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 徐虹 小结 ?文件系统的概念 ?文件的逻辑结构和存取方法 ?文件目录 ?文件的共享和文件的保护