第七章 文件管理(汤小丹版操作系统笔记) 超全超详细!!!

第七章 文件管理

7.1 文件和文件系统

为什么需要文件系统

  • 内存是易失设备,且容量有限
  • 系统及程序,数据,文档以文档形式存于外存,用时调入
  • 用户直接管理外存文件不现实
  • OS增加文件管理功能,专门管理外存文件,并提供文件存取,共享,保护等手段
  • 文件系统方便用户,保证文件安全性,提高系统资源利用率

7.1.1 数据项,记录和文件

前言

文件系统将程序和数据组织为文件的方式进行管理

文件: 具有文件名的若干相关元素(记录)的集合

记录:一组有意义数据项的集合

文件系统把数据组成分为,数据项,记录和文件三级。

在这里插入图片描述

图1. 文件,记录,数据项的关系

数据项

  • 数据项是文件系统中最低级的数据组织格式

  • 数据项分为两种类型:

    基本数据项:即字段,描述对象某种属性,最小数据逻辑单位

    组合数据项:也称复合项,由若干个基本数据项组成

  • 基本数据除数据名外,还需要数据类型

记录

  • 记录是一组相关数据项的集合
  • 记录描述对象在某方面的属性,如学生记录
  • 关键字唯一能够标识一个记录的数据项
  • 关键字由一个记录的一个或多个数据项组成

文件

  • 文件:由创建者定义,具有文件名的一组相关记录的集合
  • 文件分为有结构文件无结构文件
  • 有结构文件由若干个相关记录组成
  • 无结构文件可看成一个字符流(字符串)
  • FS中文件时最大的数据单位,描述对象的集合

文件属性

①文件类型 ②文件长度 ③文件物理位置 ④文件创建时间,修改时间等

7.1.2 文件名和类型

文件名和文件拓展名

  • 文件名用于标识不同文件
  • 扩展名,文件后缀,指示文件类型,是添加在文件名后若干附加字符,是文件一部分,用"."分割开

文件类型

  • 根据性质和用途分类
    • 系统文件:由系统软件构成的文件。大多数系统文件只允许用户调用,不允许读写
    • 用户文件:用户的源代码,目标文件,可执行文件或数据构成的文件
    • 库文件:由标准子例程及常用库函数等所构成的文件。允许用户调用,但不允许修改
  • 根据文件中数据形式来分类
    • 源文件:由源程序和数据构成,通常为ASCII码或汉字构成。
    • 目标文件:经过编译,但尚未链接的目标代码,后缀名为".obj"
    • 可执行文件:目标代码经过链接后所形成的文件,后缀名为".exe"
  • 按存取控制属性分类
    • 可执行文件:运行用户调用和执行,不允许读和写
    • 只读文件:只允许文件主及授权用户去读,不允许写
    • 读写文件:文件主和授权用户可以读写
  • 按组织形式和处理方式分类
    • 普通文件:各种程序,数据,文档等文件
    • 目录文件:由文件目录组成的文件,通过目录文件可查询下属性文件信息,可读写
    • 特殊文件:系统里的各种I/O设备,系统按文件方式操作设备。对设备文件的操作由设备驱动程序完成。

7.1.3 文件系统的结构层次

文件系统可分为三个层次

最底层是对象及其属性,中间层是对对像进行操纵和管理软件的集合,最高层文件系统提供给用户的接口。

在这里插入图片描述

图2 .文件系统的层次结构

对象及其属性层

文件系统管理对象包括:

①文件

②目录

  • 目录含文件名,文件属性,文件物理地址
  • 目录管理的目的为了方便对文件进行检索和读取

③磁盘(磁带)存储空间

  • 管理文件和目录占用外存空间,提高外存利用率和读写速度

对对象操纵和管理软件集合

文件系统的核心部分

管理对象:目录,文件,存储空间

功能

①对文件存储空间的管理

②对文件目录和管理

③对文件的逻辑地址转化为物理地址

④对文件读和写的保护

⑤对文件共享和保护

文件系统接口

FS以接口形式向用户提供操作文件和记录的方法和手段。两种接口:

  • 命令接口:直接交互,用户通过键盘命令取得文件系统的服务。
  • 程序接口:用户程序和FS的接口,通过系统调用取得文件系统的服务,例如Creat,Open

与文件系统有关的软件的四次结构

FS采用层次组织结构,每次包含一定功能,处于某层的软件智能调用同层或更底层中的功能模块。

FS有关的软件分四层

  • IO控制层:FS最底层,由磁盘驱动程序组成
  • 基本文件系统,处理内存和磁盘块的数据交换
  • 基本IO管理程序,处理磁盘IO事务,如空闲块管理,缓冲管理,逻辑块号转物理块号
  • 逻辑文件系统,处理与记录和文件有关的操作,如符号文件名,访问文件,文件保护

7.1.4 文件操作

  • 最基本文件操作

①创建文件,分配空间,建立目录项,写入属性。

②删除文件,删除目录项,回收空间。

③读文件,由文件名查目录找到具体目录项,用文件指针读

④写文件,由文件名查目录找到具体目录项,用文件指针写

⑤设置文件读/写文件,设置文件指针,实现文件随机访问

  • 文件的打开和关闭操作

“打开”(open)系统调用,避免多次重复检索外存目录,第一次操作某文件时必须先打开文件

open操作

将文件项(属性)从外存目录拷贝到内存打开文件表,并返回表目编号(文件句柄或指针),建立表目和文件的关联,以后直接在内存中找到文件信息,节省文件检索开销

文件完成时要调用close系统调用关闭

close操作

断开内存打开文件表表目与外存文件的关联,并删除修改该表目信息

文件的其他操作

  • 操作文件的属性调用,如修改文件名,所有者,文件类型,文件访问权,查询文件类型(大小,状态)…
  • 操作文件的系统调用,如创建目录,删除目录,改变当前目录和工作目录等。
  • 实现文件的共享的系统调用,已经操作文件的系统调用等。

7.2 文件的逻辑结构

文件的逻辑结构和物理结构

用户角度,文件由一系列逻辑记录组成,逻辑记录是存取文件的基本单位

文件系统高层主要关心逻辑结构,如何把逻辑记录构成逻辑文件

文件系统低层主要关心物理结构,如何将文件存储到外存

逻辑结构

也称文件组织,是用户看到的文件组织形式,决定如何读写文件

物理结构

又称文件存储结构,指文件在外存上的存储组织形式,用户不可见。与外存特性及分配方式有关

7.2.1 文件逻辑结构的类型

  • 文件逻辑结构基本要求

①有助于提高文件检索速度和效率

②方便修改文件:增加,删除和修改记录

③降低文件占用的存储空间,不要求大片连续存储空间

  • 按文件是否有结构分类

① 有结构文件:由若干个记录组成,也称记录式文件

② 无结构文件:由字符流构成,也称流式文件

有结构文件

记录式文件记录描述一个实体,各记录有相同或不同数目的数据项

根据记录长度分类:

  • 定长记录:记录长度,记录长度相同;文件长度用记录数表示;处理方便,开销小;可提高检索速度,方便修改
  • 变长记录:记录长度不相同,每类记录长度已知;检索速度慢,不利于文件处理和修改。

无结构文件

  • 有结构文件一般用于DBMS,源程序,可执行文件,库文件等采用无结构文件
  • 文件长度以字节为单位
  • 利用读写指针访问流式文件,指针指向下一个要访问的字符
  • 流式文件可看成记录文件:一个记录仅有一个字节构成
  • 按文件组织方式分类

①顺序文件 :由多个记录按顺序排列,定长或变长记录。

②索引文件 :为可变长记录建立索引表,每个记录占一个索引表,加快里检索速度。

③索引顺序文件:顺序文件与索引文件结合。建立索引表,每组记录中第一个里设置一个索引表项。

7.2.2 顺序文件

  • 顺序文件的排列方式:

串结构:

  • 按存入时间先后排列,记录顺序与关键字无关
  • 每次必须从头开始检索,速度慢

顺序结构:

  • 用户指定关键字,记录按关键字排序
  • 折半查找,插值查找。跳步查找等可提高顺序结构文件检索效率
  • 顺序文件的优缺点
  • 最佳应用场合:批量存取文件的记录。备份还原
  • 逻辑文件中顺序文件存取效率最高
  • 顺序存储设备只能采用顺序文件结构
  • 缺点:
    • 交互式应用场合顺序文件查找和修改性能差
    • 增删记录难,解决办法:另外配置一运行记录文件,定期与原文件合并

7.2.3 记录寻址

访问顺序文件首先要找到记录首地址

查找记录首地址方式有:显式查找和隐式查找

  • 隐式寻址方式

对于定长记录顺序文件,由当前记录确定下一记录地址

  • Wptr:=Wptr+L ,L为记录长度

对于定长记录,由0号记录确定n号记录地址

  • Wptr:=Wptr0+L*N ,L为记录长度
  • 显式寻址方式
  • 对定长记录可以直接或随机访问
  • 可变长记录文件不能用显式寻址方式访问
  • 定长记录文件随机访问方法
    • 通过记录序号:记录首址=记录序号*记录长度
    • 利用关键字:系统关键字和所有记录顺序比较
  • DBMS采用可变长,基于关键字记录
  • 目录检索是基于关键字(文件名)检索

7.2.4 索引文件

  • 按关键字建立索引
  • 变长记录文件查找必须从首记录查起,耗时长,效率低
  • 为变长记录文件建立一张索引表
    • 每个记录设一表项,记录器首地址长度
    • 索引表按关键字排序
    • 索引表本身是定长记录顺序文件
    • 实现变长记录的随机存取

查找过程: ①折半查找 ②访问记录

优点,加快检索速度,实现直接存取,用于及时性要求较高的场合

在这里插入图片描述

图3 .基于单个和多个索引表的索引文件示例
  • 具有多个索引表的索引文件
  • 按关键字建立索引表的索引文件只能按关键字检索
  • 用户需求:希望能按不同属性(关键字)检索记录
  • 为顺序文件建立多个索引表,为每一种检索域(属性或关键字)配置索引表。索引表中按相应的属性或关键字排序

索引文件的特点:

将顺序文件改造为可随机查找,提高查找速度

索引文件插入和删除记录页方便

需要配置索引表,每个记录一个表项,增加存储开销

7.2.5 索引顺序文件

  • 索引顺序文件的特征
  • 索引顺序文件时对顺序文件的改进

  • 两个新特征:

    引入文件索引表,实现对索引顺序文件的随机访问

    增加溢出文件,记录新增加,删除和修改的文件

  • 索引顺序文件是顺序文件和索引文件的结合

  • 一级索引顺序文件
  • 简单的索引顺序文件只使用一级索引
  • 索引建立方法
    • 将变长顺序记录文件所有记录分为若干组
    • 建立索引表,每组第一个记录建立索引项,含关键字和记录指针
  • 索引顺序文件是最常见的逻辑文件形式

一级索引顺序文件检索方法

检索方法:

  • 根据关键字用折半查找法找到该组第一个记录
  • 再用顺序法查找主文件找到记录

性能分析:10000个记录

  • 顺序文件:平均检索5000次(N/2)
  • 索引顺序文件:平均检索100次(sqrt(N)/2),提高50倍
  • 二级索引顺序文件

为索引表再建立一张索引表,形成两级索引表

优点:对于非常大的顺序文件,可进一步提高检索效率

性能分析:106记录

  • 顺序文件:平均检索106/2次

  • 索引顺序文件:平均查找1000次

  • 二级索引顺序文件:一级每100记录为一组,共10000组;

    二级每100记录为1组,共100组;平均查找此时 50+50+50=150次

7.2.6 直接文件和哈希文件

  • 直接文件
  • 前述方法根据记录键值,检索线性表,链表或索引表,以找到记录物理地址
  • 直接文件根据关键字可直接获得记录物理地址
  • 这种关键字到记录物理地址的转换称为键值转换
  • 直接文件在于在什么地方实现键值转换
  • 哈希文件
  • 目前应用最广泛的直接文件
  • 利用hash函数(散列函数)将关键字转换为记录地址
  • 为实现文件存储空间动态分配,hash函数得到执指向目录表表目指针,其内容记录物理地址
  • 哈希函数问题:键值冲突
  • 把哈希函数作为系统标准库函数,供文件存取时调用

在这里插入图片描述

图4 .hash文件逻辑结构图

7.3 文件目录

对目录管理的要求

文件目录用于标识文件属性及物理地址,供文件检索使用

要求:

  • 实现"按名存取"
  • 提高对目录的检索速度
  • 文件共享:节省空间
  • 允许文件重名

7.3.1 文件控制块和索引节点

  • 文件控制块FCB是描述和控制文件的数据结构

  • 文件管理程序借助FCB操作文件

  • 文件与文件控制块一一对应

  • 文件目录即文件控制块的有序集合,每个文件控制块是一个文件目录项

  • 文件目录也是一个文件,称为目录文件

文件控制块FCB内容

FCB含有三类信息:基本信息,存取控制信息及使用信息

基本信息包括

① 文件名:标识文件的符号名

② 文件物理位置:设备,起始盘块,盘快数(或长度)

③ 文件逻辑结构:记录式/流式;定长/变长

④ 文件的物理结构:顺序式/链接式/索引式

存取控制信息

文件主,授权用户以及一般用户的存取权限

使用信息类

建立日期和时间,最近修改日期时间,以及当前使用信息(打开该文件的进程数,是否被其他进程锁住,是否需要写回磁盘)

  • 不同的OS的文件系统,FCB内容不同

MS-DOS文件控制块

FCB长32字节,包含文件名,拓展名,首个盘块号,文件长度,建立时间,文件属性等

在这里插入图片描述

图5 MS-DOS的文件控制块

索引节点

索引节点的引入

  • 文件目录存放在磁盘上,占用大量盘块

  • 检索目录的过程,只用到文件名,其他文件描述信息在检索目录时不需调入内存

  • UNIX系统采用把文件名与文件描述信息分开的办法

  • 文件的描述信息单独构成索引节点,简称i结点

  • 文件目录项仅由文件名和文件i结点构成

  • UNIX系统一个目录占16B,文件名14B,i结点指针2B,1KB盘块可放64个目录项

在这里插入图片描述

图6. UNIX的文件目录

磁盘索引节点

每个文件唯一的磁盘索引结点放于磁盘,主要内容:

  • 文件主标识符:拥有该文件的个人或小组标识符
  • 文件类型:正规文件/目录文件/特殊文件
  • 文件存取权限,各类用户的存取权限
  • 文件物理地址,有13个地址iaddr(0)-iaddr(12),以直接或间接方式给出数据文件所在盘块编号
  • 文件长度,字节数为单位
  • 文件连接计数,所有指向该文件名的指针计数
  • 存取时间,最近存取,最近被修改及i结点最近被修改时间

内存索引节点

文件打开时将磁盘索引结点拷贝到内存的索引结点

内存索引结点增加以下内容

  • 索引结点编号,用于标识内存索引结点
  • 状态,i结点是否上锁或被修改
  • 访问计数,访问i结点的进程数
  • 文件所属文件系统的逻辑设备号
  • 链接指针,指向空闲链表和散列队列的指针

7.3.2 简单文件目录

目录结构组织

  • 目录结构组织关系到文件系统的存取速度,文件安全和共享
  • 常用文件目录形式:
    • 单级目录
    • 两级目录
    • 树形目录

单级文件目录

最简单文件目录,整个文件系统只有一张目录表

每个文件占有一个目录项,含文件名,文件扩展名,文件长度,物理地址,文件类型,文件说明,状态位,以及其他文件属性

每当创建一个新文件时,必须先检索所有目录项,以保证新文件名在目录中是唯一的。然后在从目录表中找到一块空白目录项,填入新文件的文件名及其它说明信息,并置状态位为1。

删除文件时,先到到改文件目录项,回收存储空间后,再清除该目录项

特点

优点

  • 简单,只实现按名存取

缺点

  • 查找速度慢,平均检索N/2,只适合小规模单用户环境
  • 不允许重名
  • 不便实现文件共享,只用同一文件名访问同一文件

两级文件目录

  • 每个用户建立单独用户文件目录UFD,由用户所有的FCB组成

  • 系统建立一个主文件目录MFD,每个用户目录文件占一目录项,包括用户名和指向用户目录文件的指针

在这里插入图片描述

图7 两级文件目录示意图

特点

优点

  • 提高检索目录的速度
  • 不同用户目录可以使用相同文件名
  • 不同用户可使用不同文件名访问同一共享文件

缺点

一个用户无法访问其他用户文件,多个用户间不便于共享文件

7.3.3 树形结构目录

树形目录

① 现代OS中最通用且实用的文件目录是树形结构目录

② 主目录被称为根目录,每个文件系统只能有一个根目录

③ 每个文件和每个目录只能有一个父目录

④ 数据文件称为树叶,其他目录为树节点,或子目录

⑤ 目录文件中的目录项可以是数据文件FCB也可以是目录文件FCB

⑥ 树型目录可提高目录检索速度和文件系统的性能

在这里插入图片描述

图8 树形目录示意图

路径名和当前目录

路径名

  • 树形目录中,从根目录到任何文件都有唯一通路
  • 从根目录开始,把全部目录文件名和数据文件名依次用"/"连接,即文件路径名
  • 每个文件路径都是唯一的
  • 图8中 J的路径为/B/F/J

当前目录,相对路径,绝对路径

  • 每次访问文件都从根目录开始检索很麻烦
  • 为每个进程设置一个"当前目录",又称"工作目录"
  • 进程对文件的访问都相对于"当前目录"进行
  • 从当前目录直到数据文件所构成的路径为相对路径
  • 从根目录直到数据文件所构成的路径为绝对路径

树形目录特点

  • 查询速度快;结构更清晰;文件管理和保护更容易
  • 查找文件需逐级访问中间结点,增加磁盘访问次数
  • UNIX,WINDOWS,LINUX都采用树型目录

目录操作

① 创建目录:在树形目录结构中,用户可为自己建立UFD,并可再创建子目录。创建目录时,只需查看在自己的UFD及其子目录有无新建文件的相同文件名,若无,便可在UFD或其某个目录中增加一个新目录项

② 删除目录:

  • 不可删除非空目录:MS-DOS
  • 可删除非空目录

③ 改变目录:设置当前目录

④ 移动目录

⑤ 链接(Link)操作:使文件由多个父目录,方便共享

⑥ 查找:可指定起始目录,精确匹配/局部匹配,通配符

7.3.4 目录查询技术

文件访问过程

  • 用文件名查询目录,找到FCB或索引结点
  • 根据FCB或索引结点中文件物理地址(盘块号),算出磁盘物理位置
  • 通过磁盘驱动程序将文件读入内存

查询目录方式

  • 线性检索法
  • Hash方法

线性检索法

  • 线性检索法又称顺序检索法
  • 单极目录利用文件名顺序查找到目录项
  • 树形目录中,文件名由多个文件分量名组成,需多级目录进行查找

在这里插入图片描述

图9. 查找/user/ast/mbox步骤

Hash方法

  • 建立Hash索引文件目录,使用Hash方法进行查询

    ①将文件名用Hash方法变换为文件目录的索引值

    ②利用索引值查找目录

  • 优点:显著提高索引速度

  • 文件名出现通配符(*,?)时不能使用Hash方法检索

  • Hash冲突:不同文件名转换为相同Hash值

7.4 文件共享

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

7.4.1 有向无循环图实现文件共享

有向无循环图

  • 树形目录每个文件一个父目录,不适合文件共享
  • 若允许一个文件有多个父目录,虽破坏树的特性,但可实现文件共享
  • 多用户共享文件或目录时,必须将其连接到多个用户的父目录,构成一个DAG
  • 解释共享时存在的问题:共享文件目录中不能包含物理盘块号!!!

在这里插入图片描述

图10 有向无循环图目录层次

利用索引结点

解决方法: 共享索引节点而不是目录项

  • 文件物理地址及属性不放在目录项,而放在索引节点。目录只设置文件名及指向索引节点指针。
  • 共享文件目录项都指向同一索引节点
  • 索引节点增加count字段记录连接数

在这里插入图片描述

图11 基于索引节点共享目录示意图

在这里插入图片描述

图12 进程B链接前后情况

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

利用符号链接的基本思想

  • 基本思想

    允许文件或目录有多个父目录,但只有一个主父目录,其他都是通过符号链接方式创建的链接父目录

  • 特点

    属主结构仍是简单树,方便文件查找,删除

在这里插入图片描述

图13 使用符号链接的目录层次

如何利用符号实现链接共享

  • 使用Link命令创建链接文件,这种链接方式为符号链接
  • Link共享文件在链接父目录创建LINK类型同名新文件
  • 新文件只包含被链接文件(共享文件)的路径名,即符号链接
  • 用符号链接打开文件时,OS根据路径名找到共享文件,然后访问

利用符号链接的优点

  • 只有文件主拥有指向共享文件索引的结点的指针
  • 其他用户只有共享文件路径名
  • 不会发生文件主删除共享文件后留下悬空指针的情况
  • 与HTML类似,符号链接可访问网络上的文件

利用符号链接存在问题

  • 要根据文件路径逐级查找目录,直到找到共享文件的索引结点,增大开销访问
  • 每个共享用户要建立符号链,要配置索引结点,耗费磁盘空间

PS:两种共享方式共同问题

① 一个共享文件有多个文件名

② 遍历文件系统时会多次遍历共享文件

③ 拷贝目录时共享文件产生多个拷贝

7.5 文件保护

影响文件安全性因素以及采取的措施

  • 主要因素:

    ①人为因素,误操作

    ②系统因素,掉电,磁盘故障

    ③自然因素,10年保存期

  • 三个措施

    ① 存取控制机防止人为因素

    ② 系统容错技术防止系统部分故障

    ③ 建立后备文件系统,防止自然因素

系统资源保护机制

  • OS中都配置这种保护机制

  • 进程只能在保护域内执行操作,且只能访问具有访问权的对象

  • 保护机制

    ① 访问权 ② 保护域 ③访问矩阵,包括访问控制表和访问权限表

7.5.1 保护域

访问权

  • 为保护系统对象,由系统控制进程对对象访问
  • 对象可以是硬件对象,也可以是软件对象
  • 进程对对象执行操作的权限,称为访问权
  • 访问权可以用有序对(对象名,权集)表示,如{F1,R/W}

保护域

  • 保护域用于保护系统资源,简称"域"
  • "域"是进程对一组对象访问权的集合,进程只能在指定域内执行操作
  • "域"规定进程能访问的对象和能执行的操作

在这里插入图片描述

图14 三个保护域

进程和域之间的静态关系

  • 进程和域一一对应,一个进程只联系一个域
  • 进程生命期中可用资源是固定的,这种域称为静态域
  • "静态域"通常赋予进程的访问权超过其实际需要
  • 例如:初期磁带机,结束时打印机

进程和域间的动态联系方式

  • 进程和域一对多的关系,一个进程可联系多个域
  • 进程运行分为多个阶段,每个阶段联系一个域
  • 优点:根据实际需要规定某个阶段能访问的对象
  • 例如:开始阶段,中间阶段,快结束阶段
  • 把进程和域一对多联系方式称为动态联系方式
  • 动态联系方式要有保护域切换功能

7.5.2 访问矩阵

基本访问矩阵

  • 访问矩阵用于描述系统的访问控制

  • 行代表域,列代表对象,每项由访问权组成

  • 访问权access(i,j)定义了域DI中进程对对象Qj的操作集

  • 访问权由资源拥有者或管理者决定

在这里插入图片描述

图15 一个访问矩阵示例

具有域切换权的访问矩阵

  • 为实现进程和域之间的动态联系,进程可进行域切换
  • 仅当进程有切换权时,才能进行域切换
  • 访问矩阵中增加几个对象(目的域)
  • 当前仅当swich∈access(i,j)时,才允许进程从域i切换到域j

在这里插入图片描述

图16 具有切换权的访问控制矩阵

7.5.3 访问矩阵的修改

拷贝权

  • 拷贝权,所有权及控制权,可实现对访问矩阵有控修改
  • 拷贝权将某域中的访问权(access(i,j))扩展到同一列的其他域,即为进程在其他域中也赋予同一对象的访问权(access(i,j))
  • 拷贝权不能扩散,这种拷贝方式成为限制拷贝

在这里插入图片描述

图17 带有拷贝权的访问控制矩阵

所有权

  • 利用所有权能增加或删除对对象的访问权
  • 若access(i,j)包含所有权,则域DI上的进程可以增加或删除任何其他域进程对对象j(j列)的访问权

在这里插入图片描述

图18 带有所有权的访问控制矩阵

控制权

  • 拷贝权,所有权改变同一列各项的访问权,即改变不同域进程对同一对象的范围跟权
  • 控制权用于改变同一行(域)的权限,即同一域中进程对其他对象的访问权
  • 若access(i,j)包含了控制权,域Di的进程可以删除域DJ进程对各对象的任何访问权

在这里插入图片描述

图19 带有访问权的访问控制矩阵

7.5.4 访问矩阵的实现

  • 访问矩阵概念简单,但实现困难

  • 域数量和对象很庞大,访问矩阵时空开销大

  • 进程访问对象有限,访问矩阵是稀疏矩阵

  • 访问矩阵实现方式:

    ①按列(对象)划分为控制访问表

    ②按行(域)划分为访问权限表

访问控制表

  • 访问矩阵按列划分,每个对象建立一张访问控制表ACL
  • 删除所有空项,访问控制表由有序对(域,权集)组成
  • 减少访问控制表占用的存储空间,并提高查找速度
  • 当对象是文件时,访问控制表放于FCB或i结点中
  • 访问控制表可定义对对象的缺省访问权集
  • 域是一个抽象的概念,域的实现方式

    ① 每个用户一个域,权限取决于用户身份

    ② 每个进程一个域,权限取决于进程身份

访问权限表

  • 访问矩阵按行划分,每行构成一个访问权限表
  • 某个域对每个对象操作权限构成表,每项为该域对某对象的访问权限
  • 将访问权限表存于系统区,以保护权限表
  • 大多数系统同时采用访问控制表和访问权限表,为每个对象建立访问控制表,当用户第一次检查范文控制表,再为进程建立访问权限。

  • 参考:计算机操作系统(第四版)(汤小丹)

猜你喜欢

转载自blog.csdn.net/woschengxuyuan/article/details/128057304