我确定这个问题的答案是在互联网上的某个地方(甚至是stackoverflow),然而,我很难设计问题以获得好的结果.
我上周一直在研究x86,并且对x86处理器"了解"不同进程运行的概念感到困惑.例如,在受保护模式下运行时,x86处理器能够限制进程可以访问的内存.这让我相信处理器在某种程度上意识到存在多个进程.
这让我很困惑.从处理器的角度来看,我认为它只是获取要执行的指令列表,操作系统负责订购这些指令(通过时间片,内存管理等),以便可以运行多个进程.从处理器的角度来看,我认为所有它都会看到一个顺序的指令列表.
但是,由于x86处理器可以通过进程限制内存访问,因此CPU会以某种方式意识到存在多个进程.
CPU不知道进程调度,后者可以以许多不同的方式实现,而前者必须是通用芯片.
这是怎么回事
操作系统处于控制状态(读取:CPU正在执行操作系统例程)并设置沙箱A以用于运行流程A的量程.
进程A在此沙箱中执行.
发生周期性中断,服务于此中断的例程属于操作系统,它位于沙箱之外.
操作系统处于控制状态并设置了一个沙盒B,用于运行一个过程B的量子.
进程B在此沙箱中执行.
这个过程重复进行.
受保护模式允许操作系统创建沙箱,特别是它定义权限(在实模式下,每个程序都具有相同的权限),以便进程A和进程B无法转义沙箱(例如,通过禁用中断并永久运行).
CPU不知道它发生了什么,它只是看到在不同特权和"约束"下执行的一系列指令.
在执行不同的程序之前,操作系统以不同的方式配置CPU.
这也有助于解释线程和进程之间的区别:线程调度不会更改沙箱.
正如Jester在评论中记得的那样,x86支持任务管理.
但是,HW任务不会将一对一映射到OS进程(IIRC主要操作系统几乎不使用此功能).
阅读英特尔手册3将帮助您了解CPU的功能以及安全操作系统的责任从CPU转移到内核的位置.