操作系统 第八章 文件管理(下)

8.3 文件目录

文件目录是一种数据结构,用于标志系统中的文件及其物理地址。目录管理要求: 实现“按名存取”;提高对目录的检索速度;文件共享;允许文件重名

8.3.1 文件控制块和索引节点

文件控制块FCB是描述和控制文件的数据结构;文件管理程序借助FCB对文件进行操作;文件与FCB一一对应;每个FCB是一个文件目录项;文件目录也是一个文件,被称为目录文件。
1 FCB
(1) 基本信息类。包括: 文件名;文件物理位置;文件逻辑结构;文件的物理结构
(2) 存取控制信息类。包括: 文件拥有者的存取权限、核准用户的存取权限以及一般用户的存取权限
(3) 使用信息表。包括: 文件的建立日期和时间,文件上一次修改的日期和时间,当前使用的时期
如图所示为MS-DOS系统中的FCB。 FCB长32字节,包含文件名,拓展名,首个盘块号,文件长度,建立时间,文件属性。
2 索引节点
(1) 索引节点的引入。文件目录存放在磁盘上,占用大量盘块;检索目录的过程,只用到文件名,其他文件描述信息在检索目录时不需调入内存;UNIX系统采用把文件名与文件描述信息分开的办法;文件的描述信息单独构成索引节点,简称i结点;文件目录项仅由文件名和文件i结点构成;UNIX系统一个目录占16B,文件名14B,i结点指针2B,1KB盘块可放64个目录项。
(2) 磁盘索引节点文件主标识符:拥有该文件的个人或小组标识符。 文件类型:正规文件/目录文件/特殊文件。 文件存取权限,各类用户的存取权限。 文件物理地址,有13个地址iaddr(0)-iaddr(12),以直接或间接方式给出数据文件所在盘块编号。 文件长度,字节数为单位。 文件连接计数,所有指向该文件名的指针计数。 存取时间,最近存取,最近被修改及i结点最近被修改时间。
(3) 内存索引节点索引结点编号,用于标识内存索引结点。 状态,i结点是否上锁或被修改。 访问计数,访问i结点的进程数。 文件所属文件系统的逻辑设备号链接指针,指向空闲链表和散列队列的指针

8.3.2 简单的文件目录

目录结构的组织,关系到文件系统的存取速度,文件共享和安全。最简单的文件目录形式是单级文件目录和两级文件目录。
1 单级文件目录
最简单文件目录,整个文件系统 只有一张目录表。每个文件占有一个目录项,含文件名,文件扩展名,文件长度,物理地址,文件类型,文件说明,状态位,以及其他文件属性。每当创建一个新文件时,必须先检索所有目录项,以保证新文件名在目录中是唯一的。然后在从目录表中找到一块空白目录项,填入新文件的文件名及其它说明信息,并置状态位为1。删除文件时,先到到改文件目录项,回收存储空间后,再清除该目录项。仅适用于 单用户环境
优点:简单,按名存取。
缺点:查找速度慢,平均检索N/2,只适合小规模单用户环境。不允许重名。不便实现文件共享,只用同一文件名访问同一文件
2 两级文件目录
每个用户建立单独用户文件目录UFD,由用户所有的FCB组成;系统建立一个主文件目录MFD,每个用户目录文件占一目录项,包括用户名和指向用户目录文件的指针。
优点:提高检索目录的速度;不同用户目录可以使用相同文件名;不同用户可使用不同文件名访问同一共享文件。
缺点:一个用户无法访问其他用户,多个用户之间不方便共享。

8.3.3 树形目录

1 树形目录概述
① 现代OS中最通用且实用的文件目录是 树形结构目录
② 主目录被称为根目录, 每个文件系统只能有一个根目录
③ 每个文件和每个目录只能有一个父目录
④ 数据文件称为 树叶,其他目录为树节点,或子目录
⑤ 目录文件中的目录项可以是数据文件FCB也可以是目录文件FCB
⑥ 树型目录可提高目录检索速度和文件系统的性能
树形结构的 特点:查询速度快;结构更清晰;文件管理和保护更容易。查找文件需逐级访问中间结点,增加磁盘访问次数。 UNIX,WINDOWS,LINUX都采用树型目录
2 路径名和当前目录
(1) 路径名。树形目录中,从根目录到任何文件都有 唯一通路。从根目录开始,把全部目录文件名和数据文件名依次用"/"连接,即文件路径名。每个文件路径都是 唯一的 图中J的路径为/B/F/J。
(2) 当前目录。相对路径,绝对路径。每次访问文件都从根目录开始检索很麻烦。为每个进程设置一个" 当前目录",又称" 工作目录"。进程对文件的访问都相对于" 当前目录"进行。从当前目录直到数据文件所构成的路径为 相对路径 从根目录直到数据文件所构成的路径为 绝对路径
3 目录操作
(1) 创建目录:在树形目录结构中,用户可为自己建立UFD,并可再创建子目录。创建目录时,只需查看在自己的UFD及其子目录有无新建文件的相同文件名,若无,便可在UFD或其某个目录中增加一个新目录项
(2) 删除目录:不可删除非空目录:MS-DOS;可删除非空目录。
(3) 改变目录:设置当前目录。
(4) 移动目录。在不同的父目录之间移动。
(5) 链接(Link)操作:使文件由多个父目录,方便共享
(6) 查找:可指定起始目录,精确匹配/局部匹配,通配符

8.3.4 目录查询技术

(1) 文件访问过程。用文件名查询目录,找到FCB或索引结点。根据FCB或索引结点中文件物理地址(盘块号),算出磁盘物理位置。通过磁盘驱动程序将文件读入内存。
(2) 查询目录方式。线性检索法;Hash方法。
1 线性检索法
线性检索法又称顺序检索法。单极目录利用文件名顺序查找到目录项。树形目录中,文件名由多个文件分量名组成,需多级目录进行查找。
2 Hash方法
建立Hash索引文件目录,使用Hash方法进行查询:①将文件名用Hash方法变换为文件目录的索引值;②利用索引值查找目录。
优点:显著提高索引速度。
文件名出现通配符(*,?)时不能使用Hash方法检索。
Hash冲突:不同文件名转换为相同Hash值。

8.4 文件共享

文件共享:多个进程(用户)访问同一文件。系统只需保留共享文件一份副本,节省存储空间。
共享方式:基于DAG图实现共享,利用符号链接实现共享。

8.4.1 利用有向无环图实现文件共享

1 有向无环图
  • 树形目录每个文件一个父目录,不适合文件共享
  • 若允许一个文件有多个父目录,虽破坏树的特性,但可实现文件共享
  • 多用户共享文件或目录时,必须将其连接到多个用户的父目录,构成一个DAG
  • 解释共享时存在的问题:共享文件目录中不能包含物理盘块号
2 利用索引节点解决文件共享问题
解决方法:共享索引节点而不是目录项。
(1)文件的物理地址及其他文件属性等信息不再放入目录项中,而是放在索引节点中。文件目录中只设置文件名及指向相应索引节点的指针。
(2)共享文件目录项都指向同一索引节点。
(3)索引节点增加count字段记录连接数。

8.4.2 利用符号链接实现文件共享

1 利用符号链接实现文件共享的基本思想
利用符号链接实现文件共享的 基本思想是, 允许一个文件或子目录有多个父目录,但其中仅有一个作为主父目录,其他父目录都是通过符号链接方式与之链接的
特点属主结构仍是简单树,方便文件查找,删除。
2 利用符号链接实现文件共享的具体过程
(1)使用Link命令创建链接文件,这种链接方式为符号链接
(2)Link共享文件在链接父目录创建LINK类型同名新文件
(3)新文件只包含被链接文件(共享文件)的路径名,即 符号链接
(4)用符号链接打开文件时,OS根据路径名找到共享文件,然后访问
3 利用符号链接实现文件共享的优点
(1)只有文件主拥有指向共享文件索引的结点的指针
(2)其他用户只有共享文件路径名
(3)不会发生文件主删除共享文件后留下悬空指针的情况
(4)与HTML类似,符号链接可访问网络上的文件
4 利用符号链接实现文件共享的缺点
(1)要根据文件路径逐级查找目录,直到找到共享文件的索引结点,增大开销访问
(2)每个共享用户要建立符号链,要配置索引结点,耗费磁盘空间

8.5 文件保护

影响文件安全性因素以及采取的措施
主要因素:①人为因素,误操作;②系统因素,掉电,磁盘故障;③自然因素,10年保存期。
三个措施:① 存取控制机防止人为因素;② 系统容错技术防止系统部分故障;③ 建立后备文件系统,防止自然因素。
系统资源保护机制
  • OS中都配置这种保护机制
  • 进程只能在保护域内执行操作,且只能访问具有访问权的对象
  • 保护机制
① 访问权 ② 保护域 ③访问矩阵,包括访问控制表和访问权限表

8.5.1 保护域

1 访问权
(1)为保护系统对象,由系统控制进程对对象访问
(2)对象可以是硬件对象,也可以是软件对象
(3)进程对对象执行操作的权限,称为访问权
(4)访问权可以用有序对(对象名,权集)表示,如{F1,R/W}
2 保护域
(1)保护域用于保护系统资源,简称"域"
(2)"域"是进程对一组对象访问权的集合,进程只能在指定域内执行操作
(3)"域"规定进程能访问的对象和能执行的操作
3 进程和域间的静态关系
  • 进程和域一一对应,一个进程只联系一个域
  • 进程生命期中可用资源是固定的,这种域称为静态域
  • "静态域"通常赋予进程的访问权超过其实际需要
  • 例如:初期磁带机,结束时打印机
4 进程和域间的动态联系
  • 进程和域一对多的关系,一个进程可联系多个域
  • 进程运行分为多个阶段,每个阶段联系一个域
  • 优点:根据实际需要规定某个阶段能访问的对象
  • 例如:开始阶段,中间阶段,快结束阶段
  • 把进程和域一对多联系方式称为动态联系方式
  • 动态联系方式要有保护域切换功能

8.5.2 访问矩阵的概念

1 基本的访问矩阵
  • 访问矩阵用于描述系统的访问控制
  • 行代表域,列代表对象,每项由访问权组成
  • 访问权access(i,j)定义了域D1中进程对对象Qj的操作集
  • 访问权由资源拥有者或管理者决定
2 具有域切换权的访问矩阵
  • 为实现进程和域之间的动态联系,进程可进行域切换
  • 仅当进程有切换权时,才能进行域切换
  • 访问矩阵中增加几个对象(目的域)
  • 当前仅当swich∈access(i,j)时,才允许进程从域i切换到域j

8.5.3 访问矩阵的修改

1 拷贝权
  • 拷贝权,所有权及控制权,可实现对访问矩阵有控修改
  • 拷贝权将某域中的访问权(access(i,j))扩展到同一列的其他域,即为进程在其他域中也赋予同一对象的访问权(access(i,j))
  • 拷贝权不能扩散,这种拷贝方式成为限制拷贝
2 所有权
  • 利用所有权能增加或删除对对象的访问权
  • 若access(i,j)包含所有权,则域DI上的进程可以增加或删除任何其他域进程对对象j(j列)的访问权
3 控制权
  • 拷贝权,所有权改变同一列各项的访问权,即改变不同域进程对同一对象的范围跟权
  • 控制权用于改变同一行(域)的权限,即同一域中进程对其他对象的访问权
  • 若access(i,j)包含了控制权,域Di的进程可以删除域DJ进程对各对象的任何访问权

8.5.4 访问矩阵的实现

1 访问控制表
  • 访问矩阵按列划分,每个对象建立一张访问控制表ACL
  • 删除所有空项,访问控制表由有序对(域,权集)组成
  • 减少访问控制表占用的存储空间,并提高查找速度
  • 当对象是文件时,访问控制表放于FCB或i结点中
  • 访问控制表可定义对对象的缺省访问权集
2 访问权限表
  • 访问矩阵按行划分,每行构成一个访问权限表
  • 某个域对每个对象操作权限构成表,每项为该域对某对象的访问权限
  • 将访问权限表存于系统区,以保护权限表
  • 大多数系统同时采用访问控制表和访问权限表,为每个对象建立访问控制表,当用户第一次检查范文控制表,再为进程建立访问权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值