操作系统 访问矩阵的实现
在本文中,您将了解如何在操作系统中实现访问矩阵。但在讨论访问矩阵的实现之前,您必须了解操作系统中的访问矩阵。
什么是操作系统中的访问矩阵
访问矩阵是计算机系统保护状态的安全模型。它被描述为一个矩阵。访问矩阵用于为域中运行的每个进程的每个对象指定权限。矩阵的行表示域,而列表示对象。每个矩阵单元格反映了授予域进程的访问权限集合,即每个条目 (i, j) 描述了域 Di 进程对对象 Oj 可以调用的操作集合。
操作系统中有多种实现访问矩阵的方法。这些方法如下:
- 全局表
- 对象的访问列表
- 域的能力列表
- 锁-钥匙机制
全局表
这是最基本的访问矩阵实现。在文件中维护一组有序三元组 < 域,对象,权利集合>。当在域 Di 内对对象 Oj 执行操作 M 时,会在表中搜索三元组 < Di,Oj,Rk>。如果找到这个三元组,操作可以继续进行;否则,就出现了异常(或错误)情况。这种实现有各种缺点。表通常很大,无法存储在主存储器中,因此需要额外的输入和输出。
对象的访问列表
每个访问矩阵列可以用作单个对象的访问列表。可以删除空白条目。对于每个对象,生成的列表包含定义该对象的所有域和非空访问权限集的有序对 < 域,权利集合>。
我们可以从检查默认集开始,然后找到访问列表。如果找到项目,则启用该操作;如果没有找到,则验证默认集。如果 M 在默认集中,则授予访问权限。如果不是这种情况,则拒绝访问,发生了异常情况。
域的能力列表
域的能力列表是一组对象和可以对其执行的操作。能力是用于定义对象的名称或地址。如果要对对象 Oj 执行操作 M ,则进程运行操作 M ,指定对象 Oj 的能力。仅凭能力的拥有就意味着允许访问。
在大多数情况下,功能通常与其他数据分开以两种方式之一。每个对象都有一个标签来指示其作为功能数据的类型。或者,程序的地址空间可以分成两部分。程序可以访问其中一部分,包括程序的正常指令和数据。另一部分是只由操作系统访问的功能列表。
锁-钥匙机制
这是访问列表和功能列表之间的折中方案。每个对象都有一个锁列表,其中包含特殊的位模式。另一方面,每个域都有一组特殊的位模式钥匙。只有在域拥有满足对象上的任一锁的钥匙时,基于域的进程才能访问对象。该进程不被允许修改其钥匙。
现在,让我们通过一个示例来理解操作系统中访问矩阵的实现。
例子:
在这个例子中,以上矩阵中有4个域和对象,并且考虑了3个文件(包括F1、F2和F3)和一个打印机。文件F1和F3可以被在 D1 中运行的进程读取。 在 D4 中运行的进程有与 D1 相同的权限,但它也可以对文件进行写入。只有在 D2 中运行的一个进程才可以访问打印机。访问矩阵机制由各种策略和语义特征构成。具体来说,我们应该确保在 Di 域中运行的进程只能访问行i中列出的对象。
访问矩阵中的保护策略决定了(i j)th条目中必须包含哪些权限。我们还应该选择每个进程所在的域。这个策略通常由操作系统决定。用户确定访问矩阵条目的数据。
域和进程之间的关系可能是静态的或动态的。访问矩阵提供了一种定义该领域-进程关联的控制方式。当我们将进程从一个域切换到另一个域时,我们对一个对象执行切换操作。我们可以通过将域限制在访问矩阵对象之间来调节域切换。如果它们具有切换权限,进程必须能够从一个域 (Di) 切换到另一个域 (Dj) 。
根据矩阵,运行在域 D2 的进程可以过渡到域 D3 和 D4 。在域 D4 的进程可能转换到域 D1 ,而在域 D1 的进程可能转换到域 D2 。