保护是指一种控制程序、进程或用户对计算机系统资源进行访问的机制。操作系统中的进程必须加以保护,使其免受其他进程活动的干扰。为此,系统采用了各种机制确保只有从操作系统中获得了恰当授权的进程才可以操作相应的文件、内存段、CPU和其他的资源。

一、保护目标
提供保护的理由是首先需要防止用户的恶意操作;其次是以规定的策略一致的方式使用系统资源。

二、保护原则
最小特权原则。

三、保护域
进程只能访问那些已经获得了授权的资源,而且,只能访问完成当前任务所需要的资源;其次是需要才知道原则(need-to-know)。

1、域结构
<对象名,权限集>

2、实例:UNIX
以用户ID为域,可以切换。

3、实例:MULTICS
保护域组织成环状层次结构,每个环对应一个单独的域。

四、访问矩阵

将保护模型抽象为一个矩阵,是为访问矩阵。矩阵的行代表域,列代表对象。矩阵的每个条目是一个访问集合。访问条目access(i,j)定义了在域Di中执行的进程在调用对象Oj时被允许执行的操作的集合。如图所示:

操作系统学习笔记:保护_访问权限

访问矩阵为进程和域之间的静态和动态关联提供了一种定义和实现严格控制的机制。当进程需要切换域时,可以将域添加到访问矩阵。也可以更改矩阵的内容。

五、访问矩阵的实现
1、全局表
一个有序三元关系<域,对象,权限集合>的集合。当在某域操作某对象时,就查找这个三元表,找到则继续,否则产生异常。
缺陷是这张表通常很大, 以至于无法将整张表存放在内存中,通常会采用虚拟内存技术来管理这张表。

2、对象的访问列表
访问矩阵中每个列实现成一个对象的访问列表,抛弃空条目。列表由有序对<域,权限集>组成。

3、域的权限列表
类似对象访问列表。

4、锁-钥匙机制
访问列表和权限列表的折中。每个对象有一个位模式组成的列表,称为锁;每个域也有一个位模式组成的列表,称为钥匙。仅当域拥有打开对象锁的钥匙,在该域执行的进程才能访问相应的对象。

六、访问控制
基于角色的访问控制。

七、访问权限的撤回
撤回访问权限有许多方式,难度各不同。

八、基于语言的保护
编译器提供的保护与仅基于内核的保护相比,优势是 安全、灵活、效率。