Process 在操作系统调用期间设置模式位

Process 在操作系统调用期间设置模式位,process,operating-system,job-scheduling,Process,Operating System,Job Scheduling,我想确切地知道,在系统调用内核时,谁负责设置模式位 作业调度器是否管理这些位,或者整个进程状态字(PSW)是进程控制块的一部分 或者这是中断处理程序的责任吗?如果是这样,中断服务例程(本身就是一个例程)如何执行这样的特权任务而不是任何其他用户例程?如果某个用户进程试图解决PSW问题怎么办?不同操作系统的行为是否不同?您询问的许多保护机制都是特定于体系结构的。我相信进程状态这个词指的是IBM体系结构,但我不确定。我不知道流程状态这个词在该体系结构中是如何使用的 但是,我可以给您一个例子,说明在x8

我想确切地知道,在系统调用内核时,谁负责设置模式位

作业调度器是否管理这些位,或者整个进程状态字(PSW)是进程控制块的一部分


或者这是中断处理程序的责任吗?如果是这样,中断服务例程(本身就是一个例程)如何执行这样的特权任务而不是任何其他用户例程?如果某个用户进程试图解决PSW问题怎么办?不同操作系统的行为是否不同?

您询问的许多保护机制都是特定于体系结构的。我相信进程状态这个词指的是IBM体系结构,但我不确定。我不知道流程状态这个词在该体系结构中是如何使用的

但是,我可以给您一个例子,说明在x86的情况下是如何做到这一点的。在x86中,特权指令只能在环0上执行,而中断处理程序和其他内核代码就是在环0中执行的

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

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

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