【操作系统概念】第14章:系统保护

文章目录

  • 0. 前言
  • 14.1 保护目标
  • 14.2 保护原则
  • 14.3 保护域
    • 14.3.1 域结构
    • 14.3.2 实例:UNIX
    • 14.3.3 实例:MUTICS
  • 14.4 访问矩阵
  • 14.5 访问矩阵的实现
    • 14.5.1 全局表
    • 14.5.2 对象的访问列表
    • 14.5.3 域的能力(权限)列表
    • 14.5.4 锁-钥匙机制*
    • 14.5.5 比较*
  • 14.6 访问控制
  • 14.7 访问权限的撤回

0. 前言

对操作系统的进程必须加以保护,以便免受其他进程活动的干扰。为了提供这种保护,我们可以采用多种机制来确保只有获得操作系统恰当授权的进程才能操作文件、内存段、CPU和其他系统资源。
保护作为一种机制,用于控制程序、进程或用户访问计算机系统定义的资源。这种机制必须提供手段,来指定是假的控制以及采取的强制方式。安全有别于保护,安全是保留系统和数据的完整性的信心度量。本章专注于保护。安全保障是个更加广泛的的话题,第15章会讨论。

本章目标:

  1. 讨论现代计算机系统的保护目的与原则
  2. 解释保护域或访问矩阵如何用与指定进程可以访问的资源
  3. 分析基于能力的和基于语言的保护系统

保护(protection),是从资源访问权限(授权)这个角度去考虑的,是指一种控制程序、进程或用户对计算机系统资源进行访问的控制。

安全:防范人主动进行攻击,从攻击这个角度。完整性,保密性,身份认证。抗否认。

14.1 保护目标

  • 防止用户有意的、恶意的违反访问约束。
  • 需要确保系统当中活动的程序组件只以与规定的策略一致的方式使用资源。

保护在计算机中扮演的角色是:
为实施资源使用的控制策略提供一种机制。可以通过各种途径建立这些策略。一个保护系统需要有一定的灵活性,从而能实现多种策略。

14.2 保护原则

一个经过时间检验的关键保护指导原则是最小特权原则(principle of least privilege):用户,程序和系统只被定义了能做什么,其余的都是不能做的。

这使得部件的出错/危害最小化

14.3 保护域

一个计算机系统是进程和对象的集合。对象分为硬件对象和软件对象,每个对象都有唯一的名字与其他对象区分。

要求: 用户只能通过定义好的、有意义的操作来访问对象。

为了方便研究最小特权原则这个策略,定义了保护域(protection domain),假定一个进程只在一个保护域内操作。

14.3.1 域结构

一个域是一个访问权限的集合,每一个访问权限是一个有序对 <对象名,权限集>

在一个对象上执行一个操作的权限是一种访问权限(access )

域之间是允许存在交集的,它们可以共享访问权限。但要注意,一个进程一个时间只能处于一个域中

一个域和一个进程之间的关联可以是静态的,也可以是动态的。一个进程的资源集合在进程的生命期固定不变,那么这种关联是静态的,否则则是动态的。
在这里插入图片描述
如果关联是动态的,则必须提供一个允许进程在域之间切换的域切换(domain switching)。

标准双模式(监控-用户模式)模型
当一个进程在监控模式下执行时,它可以执行特权指令并完全控制计算机系统。另一方面,如果进程在用户模式下执行时,它只能调用非特权指令。

这两种模式保护了操作系统(在监控域执行),使其免受用户进程(在用户域执行)的干扰。

14.3.2 实例:UNIX

在UNIX系统中,域和用户是关联的。域切换会配合用户身份的临时切换。
这个变动由文件系统完成。
每个文件都有一个所有者身份表示和一个域位(设置用户ID位)与它相关联。当设置用户ID位打开,用户执行文件,用户ID被设置为文件的所有者;而当设置用户ID位关闭时,用户ID 不改变

如:当用户A(用户ID=A)开始执行一个属于B的文件时,如果此时B的关联域位是关闭的,那么该进程的用户ID会被设置成A;
如果这个设置用户ID位是开启的,那么该进程的用户ID应该设置为文件的所有者B。
如果进程退出,这个临时的用户ID的变动就随之结束。

14.3.3 实例:MUTICS

MULTICS系统将保护域组织成一个环状层次结构
在这里插入图片描述
每个环对应一个单独的域。这些环按顺序用数字0~7编号。Di和Dj(0<=i,j<=7)为任意的两个域,如果j<i,那么Di是Dj的一个子集。也就是说,在Dj中运行的进程比在Di中运行的进程拥有更多特权。一个在D0中执行的进程拥有最多特权。

如果只存在两个环,那么这个策略就等价于监控-用户执行模式,监控模式对应D0,而用户模式对应D1

14.4 访问矩阵

访问矩阵(access matrix) 是访问模型的一种抽象,其中行代表,列代表对象
由于列明确定义了对象,可以在访问权限中删除对象名称。

访问条目**access(i,j)**定义了域Di中执行的进程在调用对象Oj时被允许执行的操作的集合。
在这里插入图片描述
访问矩阵策略提供了一个指定多样化策略的机制,其包括:

  • 实现访问矩阵
  • 确保维持在提纲中提及的语义属性,即必须确保在域Di中执行的进程只能访问在行i中指定的对象

通常由用户决定访问矩阵条目的内容。当用户创建一个新的对象Oj时,列Oj就被添加到访问矩阵,并恰当的初始化条目(添加权限)

访问矩阵为进程和域之间的静态和动态关联提供了一种定义和实现严格控制的机制。当需要将一个进程从一个域切换到另一个域时,其实是在一个对象(域)上执行一个操作(切换)

进程必须能够在域之间进行切换。而当进程需要切换域时,可以将域添加到访问矩阵。也可以更改矩阵的内容。

另外访问矩阵还需要三个额外的操作:

  • 复制
  • 所有者
  • 控制

有关这些操作的具体内容,参考P467

14.5 访问矩阵的实现

为了有效的实现访问矩阵,需要一种数据结构。

由于保护的特殊性,不适合使用稀疏矩阵的数据结构。

14.5.1 全局表

采用有序三元集合**<域,对象,权限>** 构成一个表。
缺点:

  • 表通常很大,无法将整张表放在内存中,因此需要额外的IO开销。(通常会使用虚拟内存技术来管理这个表)
  • 很难利用对象和域的特殊的分组方式

14.5.2 对象的访问列表

可以抛弃空的条目,每个对象的列表由有序对**<域,权限集>** 组成。
当用户想在域Di 中对对象Oj执行操作M时,系统开始在访问权限列表中为对象Oj查找条目<Di,Rk>,查找条件是M∈Rk,如果查找成功,那么操作可以继续。

D1 = read,write
D2 = read
...//操作系统概念第十章文件系统接口

对象的访问列表方法可以做一些扩充:定义一个列表和一个默认的访问权限集合。如果在访问权限列表中查找失败,则可以在默认集合中查找。

也可以先查找默认集合,再查找访问列表。

14.5.3 域的能力(权限)列表

将每个行关联到域。域的权限列表由对象以及允许作用在这些对象上的权限组成。一个对象通常用自己的物理名称或地址标识,被称为权限

O1 = read
O2 = excute
...  //[TODO]P469

用户是域的具体实现[TODO]

14.5.4 锁-钥匙机制*

14.5.5 比较*

访问控制
Solaris10通过使用基于角色的访问控制显式地增加了最小特权原则。

此方法以特权为主要内容。特权可赋与进程,限制它们只访问完成其工作所需要的内容。

另外,也可以将特权和程序分配给角色(role),角色可以分配给用户,用户也可以根据角色密码来获取角色。

特权是执行系统调用的权利或使用该系统调用一个选项的权利(如用写访问打开一个文件)

在这里插入图片描述

14.6 访问控制

14.7 访问权限的撤回

采用访问列表策略的撤回
在访问列表中搜索要撤回的访问权限,然后从列表中删除这些权限。而且灵活性很强
采用权限列表策略的撤回

对于权限来说,撤回要麻烦很多,撤回权限有以下几种方式:
重新获得
折回指针
间接
钥匙
详细解释参考P471

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 2024-03-10php开源项目日报Top10

根据Github Trendings的统计,今日(2024-03-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次…

Vue脚手架

Vue脚手架 学习目标&#xff1a; 理解Node.js基本使用方法理解包资源管理器NPM的使用理解webpack的作用理解 vue-cli 脚手架 (重点)Element-UI 组件库 1.vue的格式&#xff1a;new Vue({//作用的视图el:"id选择器",//vue中的数据/*data:{key:value,key:value,...}…

Java 基于微信小程序的快递柜小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

devops-Jenkins【内网环境部署及插件安装】

1、准备工作 外网Linux机器一台&#xff0c;内网Linux机器一台。硬件环境要求&#xff1a;至少1GB的可用内存空间&#xff0c;至少50GB的可用硬盘空间。软件环境需求&#xff1a;需要安装好Java8&#xff0c;Java的运行环境JRE1.8或者Java的开发工具包JDK1.8都可以。 2、外网安…

结构指针的使用

结构指针的使用 指针类型变量&#xff1a; 指针类型&#xff0c;是变量类型的一种&#xff0c;它是专门用来存储变量的地址的。 例如 int *p; 表示p是一个指针变量&#xff0c;它用来存储某个整型变量的地址。 int a5; int *p&a; 这样&#xff0c;就将整型变量a的地…

体系班第十三节

1判断完全二叉树递归做法 有四种情况&#xff1a;1 左树完全&#xff0c;右数满&#xff0c;且左高为右高加一 2左满 &#xff0c;右满&#xff0c;左高为右高加一 3左满&#xff0c;右完全&#xff0c;左右高相等 4左右均满且高相等 #include<iostream> #include&l…

转移表回调函数实现

回调函数实现 计算器的模拟&#xff08;函数指针数组的使用&#xff09;&#xff08;回调函数&#xff09; 简化 冗余 老的代码的问题就是 冗余 写死 不能完成不同的任务 函数调用的时候只需要知道地址就可以 calc计算器 这里也称之为转移表 #define _CRT_SECURE_NO_WAR…

出现“error: failed to push some refs to ‘https://github.com/****.git‘”,如何解决问题

一、出错情况&#xff1a; 今天继续推送整理的知识点的时候&#xff0c;出现了一个报错。“error: failed to push some refs to https://github.com/.git”&#xff0c;百思不得其解&#xff0c;之前推送的时候都可以轻松推送成功&#xff0c;如今却说本地库与远程库不一致。…

腾讯云轻量应用服务器“月流量”什么意思?用完了怎么办?

腾讯云轻量应用服务器“月流量”什么意思&#xff1f;就是限制月流量的意思。腾讯云轻量服务器流量用完了怎么办&#xff1f;超额部分的流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0…

Git win与linux换行符转换的问题

转载&#xff1a;warning: in the working copy of ‘package-lock.json‘, LF will be replaced by CRLF the next time Git_warning: in the working copy of package.json, lf-CSDN博客 warning: in the working copy of ‘package-lock.json‘, LF will be replaced by CRL…

ModStartBlog 稳定版 v9.0.0

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 会…

C++ Function Templates (函数模板)

C Function Templates [函数模板] 1. Templates and Generic Programming (模板与泛型编程)2. Defining a Function Templates (定义函数模板)2.1. Instantiating a Function Template (实例化函数模板)2.2. Template Type Parameters (模板类型参数)2.3. Nontype Template Par…

【实战项目】Boost搜索引擎项目

目录 1. 项目的相关背景 2. 搜索引擎的相关宏观原理 3. 搜索引擎技术栈和项目环境 4. 正排索引 vs 倒排索引 - 搜索引擎具体原理 4.1 正排索引 4.2 目标文档进行分词 4.3 倒排索引 4.4 模拟一次查找的过程&#xff1a; 5. 编写数据去标签与数据清洗的模块 Parser 5.1…

《操作系统真相还原》读书笔记八:获取物理内存容量以及本书源代码

编写mbr.S汇编代码 ;LOADER_BASE_ADDR equ 0x900 ;LOADER_START_SECTOR equ 0x2 %include "boot.inc"SECTION MBR vstart0x7c00mov ax,csmov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00mov ax,0xb800mov gs,axmov ax,0x0600mov bx,0x0700mov cx,0mov dx, 184fh…

力扣图论篇

以下思路来自代码随想录以及官方题解。 文章目录 797.所有可能的路径200.岛屿数量130.被围绕的区域1020.飞地的数量 797.所有可能的路径 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不…

USB协议学习(三)大容量存储设备SCSI协议分析

笔者来简单介绍一下SCSI得协议命令 1、SCSI协议认识 SCSI&#xff1a;Small Computer System Interface&#xff0c;用于计算机外部设备得接口标准&#xff0c;定义了与外部设备得一套协议。SCSI标准协议族支持很多钟SCSI设备&#xff0c;像盘&#xff0c;打印机&#xff0c;扫…

Ubuntu23.10安装FFmpeg及编译FFmpeg源码

安装FFmpeg: 打开终端: 输入 sudo apt install ffmpeg 安装成功: 验证FFmpeg 默认安装位置与库与头文件位置 使用FFmpeg源码编译: 1.安装YASM sudo apt-get install yasm

[mmucache]-ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 思考: 1、cache的entry里都是有什么&#xff1f; 2、TLB的entry里都是有什么? 3、MMU操作…

10-ARM gicv3/gicv4的总结-基础篇

目录 1、gic的版本2、GICv3/gicv4的模型图3、gic中断号的划分4、GIC连接方式5、gic的状态6、gic框架7、gic Configuring推荐 本文转自 周贺贺&#xff0c;baron&#xff0c;代码改变世界ctw&#xff0c;Arm精选&#xff0c; armv8/armv9&#xff0c;trustzone/tee&#xff0c;s…

遗传算法(GA)求解基于栅格地图的机器人最优路径规划,可以自行修改地图(提供MATLAB代码)

通过栅格法建立栅格地图作为机器人路径规划的工作环境,采用遗传算法作为机器人路径搜索的规则.将所有机器人放置于初始位置.经过NC次无碰撞迭代运动找到最优路径.到达目标位置.为防止机器人在路径搜索过程中没有达到最大迭代次数时路径大小已不发生变化而陷入局部最优。 一、部…