proected 模式
转自:点击打开链接
x86 的 protected 模式是构建在段机制上,实质上 protected 模式应称为 segmentation protected 模式。整个 protected 模式的核心是 Privilege(权限),众多机制都是围绕 privilege 这个核心元素来构建。
3.1、 保护的意图
在久远的 real 模式下的 dos 平台,还是那种“硬件为软件服务,软件服从硬件”,现今的 processor 与 软件的之间的的关系已经由传统的关系变为互相依靠而又互相影响。
软件服务硬件的时候,又反过来影响硬件的设计。硬件为软件提供平台的时候,又反过来受软件设计的影响不断完善硬件。在 dos 单任务的系统无所谓保护不保护。在多任务系统出现后,processor 同时运行多个任务时那么就需要为每个任务的正确运行提供一种保障措施。保证每个任务的数据是安全的。 processor 就要提供这么一个保护的借施。
随着软件日益复杂及庞大。processor 不断完善自身提供更强大的功能。一个典型的例子是:NX (不可执行)页出现从硬件层面上解决了系统软件防止数据区不可执行的功能。以及 processor 的 virtualzation 虚拟化技术的出现,从硬件层提供了支持。
3.2、 保护着什么 ?
protected 的核心目的保护些什么?这是值得思考的问题,其实就是保护数据。让属于自己权限范围的数据不被他人非法地使用或修改。这些数据是任务的执行代码或任务的堆栈数据等。
系统软件划分几个层次的数据,将这些数据隔离起来。系统软件核心数据不受用户软件的干扰和破坏,从而增强系统的壮健性,也是主要目的。每个用户软件的数据也可被隔离互不干扰。
3.3、 怎样保护 ?
前面提过 x86 保护核心是 privilege,x86 processor 定义了 4 个 privilege level(权限级别)从 level0 ~ level3,代表最高权限级别的 0 级到最低权限的 3 级。0 级可访问所有硬件资源,3 级访问有限的硬件资源。
3.3.1、 如何对数据进行隔离 ?
x86 提供的机制是:对每一个被隔离的数据区进行属性定义,即通过每个数据区进行定义他们的属性,包括它们的位置、长度大小、被访问的权限等属性。定义每个数据区的不同的属性从而将它们互相隔离。
这种属性的定义是通过 descriptor(描述符)数据结构进行定义的。代码区域对应的是 code segment descriptors,而数据区域则对应 data segment descriptors。
实际上,descriptor 有两种性质:一种是直接对数据区进行属性定义,如上述的代码段和数据段。这种 descriptor 直接定义了数据区的位置、段长度、段相关的访问权限以及数据段的其他属性。另一种则是描述一种间接访问措施,这种间接访问措旋是通过另一个被称为 gate(门)的数据结构来实现的。
3.3.2、 数据区访问权限的审查
为每个数据区域定义 descriptor 时,根据需要定义这些数据区域的访问权限。系统软件核心部件总是拥有最高级别的权限,用户软件则总是拥最低级别的权限。
保证用户级别代码不能访问系统级别代码或数据的通过审查它们的权限级别,经过审查通过后才能访问。一个简单的原则是低权限不能访问属于最高权限级别的数据。level 3 只能访问属于 level 3 级别的数据,level 2 可以访问属于 level 2 级别和属于 level 3 级别的数据。
3.3.3、 数据区的访问途径
所有数据访问都是基址+偏移,这个基址在 descriptor 的定义。对于直接访问方式偏移值是程序逻辑中指出。对于间接访问方式基址和偏移值都是间接数据层中指出。
proected 模式相关推荐
- 大淘宝服务端技术干货沉淀和总结
网络基础 TCP三次握手 三次握手过程 客户端--发送带有SYN标志的数据包--服务端 一次握手 Client进入syn_sent状态 服务端--发送带有SYN/ACK标志的数据包--客户端 二次握手 ...
- python 各种模块学习
from:https://blog.csdn.net/weiwangchao_/article/details/70570508 转载:.... Python的模块大全,很全,有详细介绍! 另外附Py ...
- 【Docker】容器的几种网络模式
当你使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.本文介绍了Docker的4种 ...
- kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...
- 2022-2028年中国交通建设PPP模式深度分析及发展战略研究报告(全卷)
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了PPP模式行业相关概述.中国PPP模式行业运行环境.分析了中国PPP ...
- Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)
1. 发布-订阅概念 发布-订阅 模式包含两种角色,分别为发布者和订阅者. 订阅者可以订阅一个或者若干个频道(channel): 而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都可以收到此消 ...
- 2022-2028年中国新型氟塑料行业市场发展模式及投资机会预测报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了新型氟塑料行业相关概述.中国新型氟塑料行业运行环境.分析了中国新型氟 ...
- RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)
1. simple 模式 simple 模式是最简单最常用的模式 2. work 模式 work 模式有多个消费者 消息产生者将消息放入队列.生产者系统不需知道哪一个任务执行系统在空闲,直接将任务扔到 ...
- 2022-2028年中国聚合物气体分离膜行业市场发展模式及投资前景分析报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了聚合物气体分离膜行业相关概述.中国聚合物气体分离膜行业运行环境.分析 ...
最新文章
- 开发日记-20190521 关键词 bash的几个初始化文件
- python django -5 进阶
- 真实实验测试多少节电池可以点亮白炽灯泡!
- c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
- OpenCV cv::merge用法的实例(附完整代码)
- jena fuseki RDF应用
- solr后台界面介绍——(十一)
- Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小
- centos-安装pycharm
- EXP-00011: XX.tab does not exist
- 内存模拟块设备驱动程序设计
- 麻省理工线性代数第一讲
- 四川大学计算机学院保研规定,2020四川大学计算机学院保研夏令营通知
- 学点字符串匹配——zbox
- 在java中使用openCV遍历红色,像素遍历(仅限java)
- 如何建立广泛、牢固的人脉?
- 直击人心的数据可视化设计作品
- 计算机原理实验红绿灯转换,微机原理实验交通灯控制实验.doc
- 网站内嵌百度地图定向到公司位置
- push(array)和push([...array])的区别和联系