操作系统访问控制机制

news2024/12/23 14:25:14

使用访问控制技术,可以设置用户对系统资源的访问权限,即限定用户只能访问允许访问的资源。访问控制还可以通过设置文件的属性,来保护文件只能被读而不能被修改,或只允许核准的用户对其进行修改等。

1.1 保护域

把一个进程能对某对象执行操作的权利称为访问权,它可以用一个有序对<对象名,权集>来表示,例如,某进程对文件F1有执行读和写操作的权利,这时,该进程的访问权可表示为<F1,{RW}>

保护域是进程对一组对象访问权的集合,进程只能在指定域内执行操作。因此,保护域规定了进程所能访问的对象和能执行的操作。

不同的保护域可以相交,相交部分表示它们有共同的权限。

补充:

  • R:读操作

  • W:写操作

  • E:执行操作

  • S:切换操作

实例:

在下图所示的3个域中,它们分别是D1D2D3。其中D2D3相交,表明访问权限<O7,{W}>D2D3共享,这表示运行在D2D3上的任意一个进程都可以对对象O7执行写操作。需要注意的是,进程只有在D1中执行时才能读写对象O1,另外,仅在域D3中的进程才能执行对象O6

1.2 访问矩阵

保护域机制是实现系统资源保护的一种模型,我们可以利用一个矩阵来描述这种模型,称之为访问矩阵(Access Matrix)

访问矩阵的行代表域,列代表对象。矩阵的每个条目是一个访问集合。由于列明确定义了对象,可以在访问权限中删除对象名称。条目<i,j>定义了在域Di中执行的进程在访问对象Oi时被允许执行的操作集合。

实例:

在下表所示的访问矩阵中,进程在域D1中执行时,它可以读文件F2,写文件F1F2,执行文件F2F3。进程在域D4中执行时,可以读文件F2F3,写文件F1。只有在域D2中执行的进程才可以访问打印机。

对象域F1F2F3打印机
D1WR, W, EE
D2RW
D3ER
D4R, WR

如果将域本身也看作一个保护对象,可以把域的切换操作添加到访问控制矩阵,这样即可控制域切换。当需要将一个进程切换到另外一个域时,其实就是在一个对象(域)上执行一个操作(切换)。进程必须能够在域之间进行切换,当且仅当访问权限switch∈access(i,j)时,才允许从域Di切换域Dj

实例:

在下表中,一个在域D2中执行的进程可以切换到域D3。域D4中的一个进程可以切换到域D1,而D1中的进程可以切换到域D2

对象域F1F2F3打印机D1D2D3D4
D1WR, W, EES
D2RWS
D3ERSSS
D4R, WRS

1.3 访问矩阵的实现

访问控制表

把访问矩阵按列向量(对象)划分,为每一列建立一张访问控制表ACL(Access Control List)。

在该表中,矩阵中属于该列的所有空项已被删除,只剩下有序对<域,权集>。通常情况下,访问矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间提高查找速度

实例:

进程在域D1中执行时,它可以读、写和执行文件F2。进程在域D3中执行时,可以执行文件F2。由于域D2D4为空,因此,访问控制表中不包含D2D4项,从而节省了存储空间。

对象域F2
D1R, W, E
D3E

访问权限表

把访问矩阵按行(域)划分,为每一行建立一张访问权限表CL(Capability List)。访问权限表是由一个域对每一个对象可以执行的操作集合所构成的表。访问权限表包括两部分:对象名访问权。表中的每一项为该域对某对象的访问权限。

实例:

进程在域D1中执行时,它可以写文件F1,读、写和执行文件F2,执行文件F3

对象域F1F2F3
D1WR, W, EE

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

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

相关文章

11-pytorch-使用自己的数据集测试

b站小土堆pytorch教程学习笔记 import torch import torchvision from PIL import Image from torch import nnimg_path ../imgs/dog.png imageImage.open(img_path) print(image) # imageimage.convert(RGB)transformtorchvision.transforms.Compose([torchvision.transforms.…

stm32利用CubeMX完成按键控制LED灯的点亮与熄灭

首先画电图&#xff0c;如下&#xff1a;&#xff08;会话最小系统后就可以不画了&#xff0c;如果要是画实物的话必须要有的&#xff0c;不能忘&#xff0c;模拟就无所谓了&#xff09; 然后是CubeMX设置时钟 这次使用的是内部8M时钟&#xff0c;这样能避免proteus闪退的情况&…

虚 拟 化原理

1 概念&#xff1a; ①通俗理解&#xff1a; 虚拟化是在硬件和操作系统之间的实践 ②通过对计算机的服务层级的理解&#xff0c;理解虚拟化概念 抽离层级之间的依赖关系&#xff08;服务器虚拟化&#xff09; 2 虚拟化分类 ①按架构分类 ◆寄居架构&#xff1a;装在操作系统上…

鸿蒙LiteOS-M 内核初始化

目录 一、LiteOS-M 初始化内核二、LOS_KernelInit代码分析三、LOS_Start代码解析坚持就有收获 一、LiteOS-M 初始化内核 在LiteOS-M应用程序中&#xff0c;系统初始化如下&#xff1a; /*** brief This is the ohos entry, and you could call this in your main funciton af…

Flutter(一):安装和环境配置、创建Flutter项目

安装和环境配置、创建Flutter项目 Flutter 下载方式1方式2 Flutter 环境配置配置国内镜像站点解压 Flutter将 flutter 添加到系统环境变量中运行 flutter doctor来验证安装 Android Studio下载插件创建项目安装 Android SDK 工具在模拟器上运行 Flutter 下载 方式1 全版本&…

C++基础知识(四:类的学习)

类 类指的就是对同一类对象&#xff0c;把所有的属性都封装起来&#xff0c;你也可以把类看成一个高级版的结构体。 【1】定义 class 类名 { 访问权限:成员属性; 访问权限:成员方法; }访问权限&#xff1a; public:共有的&#xff0c;类内、类外和子类中都可以访问 private:私有…

Matlab: Introduction to Hybrid Beamforming

文章目录 来源混合波束赋形的基本概念System Setup 来源 在matlab的命令行输入 doc hybrid beamforming 混合波束赋形的基本概念 混合波束形成简介 本例介绍了混合波束形成的基本概念&#xff0c;并说明了如何模拟这种系统。 现代无线通信系统使用空间复用来提高散射体丰富…

创建者模式(Builder Pattern):构造复杂对象的通用解决方案

文章目录 **一、技术背景与应用场景****为何使用创建者模式&#xff1f;****典型应用场景包括但不限于&#xff1a;** **二、创建者模式定义与结构****三、使用步骤举例**四、优缺点分析总结 一、技术背景与应用场景 创建者模式是一种对象创建型设计模式&#xff0c;它通过将复…

代码随想录算法训练营29期|day60 任务以及具体安排

第九章 动态规划part17 647. 回文子串 class Solution {public int countSubstrings(String s) {char[] chars s.toCharArray();int len chars.length;boolean[][] dp new boolean[len][len];int result 0;for (int i len - 1; i > 0; i--) {for (int j i; j < le…

高级语言期末2011级A卷

1.编写函数&#xff0c;判定正整数m和n&#xff08;均至少为2&#xff09;是否满足&#xff1a;数m为数n可分解的最小质因数&#xff08;数n可分解的最小质因数为整除n的最小质数&#xff09; 提示&#xff1a;判定m为质数且m是n的最小因数 #include <stdio.h> #include…

算法打卡day1|数组篇|Leetcode 704.二分查找、27.移除元素

数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合&#xff0c;可以方便的通过下标索引的方式获取到下标下对应的数据。 1.数组下标都是从0开始的。 2.数组内存空间的地址是连续的。 正是因为数组的在内存空间的地址是连续的&#xff0c;所以我们在删除或者增添…

Visual Studio 打开.edmx文件不显示表并报错:没有可用于.edmx的编辑器

打开.edmx文件时&#xff0c;呈现的是xml视图&#xff0c;不显示Diagram视图&#xff0c;且弹出报错“没有可用于.edmx的编辑器” 解决方案&#xff1a;在.edmx文件上右键&#xff0c;选择ado.net entity data model designer&#xff0c;即可正常显示表

mysql-MVCC

一、基础概念 1. MVCC的含义 MVCC (Multiversion Concurrency Control)&#xff0c;即多版本并发控制技术&#xff0c;它是通过读取某个时间点的快照数据&#xff0c; 来降低并发事务冲突而引起的锁等待&#xff0c; 从而提高并发性能的一种机制. MVCC 的实现,是通过保存数据…

N种方法解决1(CTF)

这里遇到的问题&#xff1a;一开始采用的base64解码平台有问题&#xff1b;默认解密出的格式为GBK格式&#xff1b;直接复制粘贴发现无法还原图片&#xff1b;又尝试了其他编码的&#xff1b;发现只有hex格式可以保证图片正常还原&#xff1b; 图片是以二进制存储的&#xff1…

响应式页面兼容移动端

文章目录 1. 响应式开发1.1 原理1.2 响应式容器 2. Bootstrap前端开发框架2.1 Bootstrap介绍(1) 优点(2) 版本 2.2 Bootstrap使用2.3 布局容器(1) container类(2) container-fluid类 3.Bootstrap栅格系统3.1 介绍3.2 栅格选项参数3.3 列嵌套3.4 列偏移3.5 列排序3.6 响应式工具…

Android14之input高级调试技巧(一百八十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【Python笔记-设计模式】享元模式

一、说明 享元模式是一种结构型设计模式&#xff0c;它摒弃了在每个对象中保存所有数据的方式&#xff0c;通过共享多个对象所共有的相同状态&#xff0c;让你能在有限的内存容量中载入更多对象。 (一) 解决问题 旨在减少大量相似对象创建时的内存开销 (二) 使用场景 大量…

C++的STL常用算法->常用遍历算法、常用查找算法、常用排序算法、常用拷贝和替换算法、常用算术生成算法、常用集合算法

#include<iostream> using namespace std; #include <algorithm> #include <vector> //常用遍历算法 for_each //普通函数 void print01(int val) { cout << val << " "; } //仿函数 //函数对象 class print02 { public: v…

第 2 章 ROS通信机制_通信机制实操(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 2.5.1 实操01_话题发布 需求描述&#xff1a;编码实现乌龟运动控制&#xff0c;让小乌龟做圆周运动。 结果演…

前端工程化面试题 | 16.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…