操作系统中的访问矩阵
访问矩阵是计算机系统中保护状态的安全模型。它被表示为一个矩阵。访问矩阵用于定义在域中执行的每个进程对每个对象的权限。矩阵的行代表域,列代表对象。矩阵的每个单元格代表一组访问权限,这些权限被赋予域的进程意味着每个条目(i,j)定义了在域 Di 中执行的进程可以对对象 Oj 调用的操作集。
F1 | F2 | F3 | Printer | |
---|---|---|---|---|
D1 | read | read | ||
D2 | ||||
D3 | read | execute | ||
D4 | read write | read write |
根据上面的矩阵:有四个域和四个对象——三个文件(F1、F2、F3)和一台打印机。在 D1 中执行的进程可以读取文件 F1 和 F3。在域 D4 中执行的进程与 D1 具有相同的权限,但它也可以写入文件。打印机只能被域 D2 中执行的一个进程访问。访问矩阵的机制由许多策略和语义属性组成。具体来说,我们必须确保在域 Di 中执行的进程只能访问第 i 行中指定的那些对象。
有关保护的访问矩阵的策略涉及应在第 (i, j) 个条目中包含哪些权限。我们还必须决定每个进程执行的域。此策略通常由操作系统决定。用户决定访问矩阵条目的内容。
域和进程之间的关联可以是静态的,也可以是动态的。访问矩阵提供了一种机制来定义域和进程之间的这种关联的控制。当我们将进程从一个域切换到另一个域时,我们对对象(域)执行切换操作。我们可以通过在访问矩阵的对象中包含域来控制域切换。进程应该能够从一个域 (Di) 切换到另一个域 (Dj),如果且仅是给 access(i, j) 一个切换权限。
F1 | F2 | F3 | Printer | D1 | D2 | D3 | D4 | |
---|---|---|---|---|---|---|---|---|
D1 | read | read | switch | |||||
D2 | switch | switch | ||||||
D3 | read | execute | ||||||
D4 | read write | read write | switch |
根据矩阵:在域 D2 中执行的进程可以切换到域 D3 和 D4。在域 D4 中执行的进程可以切换到域 D1,在域 D1 中执行的进程可以切换到域 D2。