0

我不太明白WIKI上的一句话System Call“操作系统以最高权限执行,并允许应用程序通过系统调用请求服务,这些调用通常通过中断执行;中断会自动将CPU置于某些需要的状态。特权级别,然后将控制权传递给内核,由内核确定是否应授予调用程序所请求的服务。”

物理上如何将 CPU 置于某个特权级别,将控制权传递给内核意味着什么?请在 CPU 寄存器级别解释这些。

4

1 回答 1

3

这是一个很好的问题,特权级别是操作系统中最漂亮的概念之一。

然而,这个论坛不是问的正确地方。

不过既然你问了,我就给你画个大概的图。现在你知道操作系统做了很多进程调度。必须定期调用调度程序。CPU 维护一个计数器,该计数器会导致定时器中断。

处理定时器中断的代码调用调度程序。现在在调度期间操作系统级别的数据结构被修改(进程队列等)。此时,如果用户程序由于某种原因而处于活动状态,它可能会与那些导致崩溃的数据结构混淆。

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

现在很棒的部分来了。如果假设这个特权级别的切换是由软件进行的,如果有一个命令,它可能会被恶意用户程序利用。

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

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

因此,理智得以保留。

于 2013-06-18T21:09:43.300 回答