中断如何将CPU置于所需的权限级别?

时间:2013-06-18 20:53:08

标签: operating-system cpu interrupt

我不太了解WIKI关于System Call的一句话操作系统以最高级别的权限执行,并允许应用程序通过系统调用请求服务,系统调用通常通过中断执行;中断自动将CPU置于某个所需的权限级别,然后将控制权交给内核,该内核确定是否应该授予调用程序所请求的服务。“

如何将CPU置于特定权限级别以及将控制权传递给内核意味着什么?请在CPU寄存器级别解释这些。

1 个答案:

答案 0 :(得分:3)

这是一个很好的问题,权限级别是操作系统最美丽的概念之一。

然而,这个论坛不是一个正确的问题。

然而,既然你已经问过,我会给你画一幅普通照片。现在您知道操作系统会执行大量的进程调度。必须定期调用调度程序。 CPU维护一个计数器,导致定时器中断。

处理Timer中断的代码调用调度程序。现在,在调度OS级别的数据结构被修改(进程队列等)。此时,如果用户程序由于某种原因而处于活动状态,则可能会导致导致崩溃的数据结构混乱。

这是通过权限级别处理的。因此,在调度期间,CPU被称为处于特权模式 - 内核模式。用户程序现在无法访问CPU。

现在出现了很棒的部分。如果假设此特权级别的交换机是由软件进行的,则如果有命令,则可能被恶意用户程序利用。

出于这个原因,我们不能依靠软件来进行切换。我们需要硬件支持。 硬件设计为接收中断设置“特权位寄存器”。当中断代码完成(调度完成)时,返回使硬件清除该位。

中断处理代码位于为OS代码保留的存储器的受保护区域中。用户程序无法访问此代码(如果它尝试访问该部分内存,则硬件会抛出异常)。

因此保持了理智。