梦飞云服务器MFISP

会员中心

技术支持

登入
帮助中心

一致性代码段和非一致性代码段

一致代码段:
非一致代码段.

之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.
但是有时候用户程序也需要读取内核的某些数据,怎么办呢?
于是os将内核程序开辟一些可以供用用户程序访问的段.但是不允许用户程序写入数据.
1.内核不用知道用户程序的数据.内核不用调用用户程序的数据.内核不用转移到用户程序中来.
2.用户程序只能访问到内核的某些共享的段.我们称这些段为一致代码段
3.用户程序不能访问内核不共享的段.


1.在x86中的数据和代码是按段来存放的:[section]
2.............程序是通过选择子/门调用等等来在段之间来回走动的.
3.每一个选择子/门调用选择子是有分等级的:这个是在选择符的结构中:RPL(最后2位)
5:每一个代码段/数据段也是有分等级的.:这个是在gdt描述符中.


6:调用的选择符和被调用的段都分了等级.哪么这些等级在哪里使用呢?在一致代码段.也就是共享段中使用
     既然是共享所以就有规则了:


对于一致代码段:也就是共享的段.
1.特权级高的程序不允许访问特权级低的数据:核心态不允许调用用户态的数据.
2.特权级低的程序可以访问到特权级高的数据.但是特权级不会改变:用户态还是用户态.

对于普通代码段.也就是非一致代码段:
0.只允许同级间访问.
1.绝对禁止不同级访问:核心态不用用户态.用户态也不使用核心态.

总结:似乎这些东西跟我们初学者预想的那样不同.核心态是老大.想用访问谁都可以.其实错了.结果恰恰相反.
这是因为防止用户篡改核心态的数据.导致核心态执行用户代码.而造成内核崩溃.
内核坏了.什么事都可能发生.

notes:要注意特权级和特权级数的问题.
            特权级数    特权级
                 0                                 系统级:特权级高 特权级数低
                 3                                 用户级:特权级低 特权级数高

  • 63 用户发现这很有用
这篇文章有帮助吗?

Related Articles

操作系统知识

从硬件的发展史的角度来看段机制 1971年,Intel 发布了第一款的微处理器4004。它是一个4位的微处理器。 1972年,Intel...

用户级线程和内核级线程的区别

1 内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。 2...

DPL,RPL,CPL 之间的联系和区别

这篇文章写的太好了!!这是保护模式完整的权限检查,其实当今的操作系统也不会弄的这么复杂……...

硬盘分区表知识——详解硬盘MBR

硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘...

计算机是如何启动的?

作者: 阮一峰 日期: 2013年2月16日 从打开电源到开始操作,计算机的启动是一个非常复杂的过程。...