在OS系统调用期间设置模式位

时间:2014-01-13 07:23:31

标签: process operating-system job-scheduling

我想确切地知道在系统调用内核期间设置模式位的确切责任。

作业调度程序是管理这些位,还是整个过程状态字(PSW)是过程控制块的一部分?

或者中断处理程序是否有责任这样做?如果是这样,中断服务例程(作为例程本身)如何执行这样的特权任务而不是任何其他用户例程?如果某些用户进程尝试解决PSW会怎样?不同操作系统的行为是否不同?

1 个答案:

答案 0 :(得分:1)

您询问的很多保护机制都是特定于体系结构的。我相信Process Status Word指的是IBM架构,但我不确定。我不知道具体如何在该架构中使用进程状态字

但是,我可以举例说明如何在x86的情况下完成此操作。在x86中,特权指令只能在环0上执行,这是中断处理程序和其他内核代码执行的内容。

CPU知道代码​​是否在内核空间或用户空间中的方式是通过在虚拟内存系统中的特定页面上设置的保护位。这意味着当创建进程时,某些内存区域被标记为用户代码,而内核映射到的其他区域被标记为内核代码,因此处理器知道正在执行的代码是否应具有基于的特权访问权限它在虚拟内存空间中的位置。由于只有内核可以修改此空间,因此用户代码无法执行特权指令。

进程控制块不是特定于体系结构的,这意味着完全由操作系统决定如何使用它来设置权限等。但有一件事是肯定的,CPU不会读取操作系统中存在的过程控制块。但是,某些体系结构可能内置了自己的过程控制机制,但这并非绝对必要。在x86上,过程控制块将用于了解进程可以进行哪种系统调用,以及虚拟内存映射,它告诉CPU它的权限级别。

虽然不同的体系结构具有不同的保护用户代码的机制,但它们都共享许多共同的属性,因为当通过系统调用执行内核代码时,系统知道只有特定位置的代码才能享有特权。