如何在x86处理器中操作硬件权限级别

时间:2016-05-03 09:10:40

标签: assembly operating-system privileges

我无法理解硬件如何知道当前内核代码正在运行。我们是否需要在某些寄存器中设置一些内存地址范围,指示这些内存之间的CPU地址,它是内核运行的。

2 个答案:

答案 0 :(得分:2)

在x86架构上,这是通过描述符表实现的。启动代码,安装表告诉CPU哪些内存区域具有哪些权限。访问内存时,硬件将检查指令和/或访问方法是否对地址的给定描述符有效。

嗯,这是一个非常基本的描述,因为这是一个相当广泛的问题。

一些发布和链接可帮助您入门:

What are Ring 0 and Ring 3 in OS

http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/

我还建议下载(免费)英特尔手册,因为这里也有详细介绍。

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

答案 1 :(得分:0)

CPU可以通过异常或中断进入更高模式。 CPU使用从中断返回指令返回到较低模式。

CPU知道它从进程状态寄存器运行的模式。 操作系统在执行异常或中断的处理程序时知道它处于内核模式。

操作系统设置页表以定义内核的地址范围。设置这些表,以便在CPU未处于内核模式时保护它们不被访问。