当前位置:  开发笔记 > 程序员 > 正文

x86处理器如何"识别"多个进程的运行?

如何解决《x86处理器如何"识别"多个进程的运行?》经验,为你挑选了1个好方法。

我确定这个问题的答案是在互联网上的某个地方(甚至是stackoverflow),然而,我很难设计问题以获得好的结果.

我上周一直在研究x86,并且对x86处理器"了解"不同进程运行的概念感到困惑.例如,在受保护模式下运行时,x86处理器能够限制进程可以访问的内存.这让我相信处理器在某种程度上意识到存在多个进程.

这让我很困惑.从处理器的角度来看,我认为它只是获取要执行的指令列表,操作系统负责订购这些指令(通过时间片,内存管理等),以便可以运行多个进程.从处理器的角度来看,我认为所有它都会看到一个顺序的指令列表.

但是,由于x86处理器可以通过进程限制内存访问,因此CPU会以某种方式意识到存在多个进程.



1> Margaret Blo..:

CPU不知道进程调度,后者可以以许多不同的方式实现,而前者必须是通用芯片.

这是怎么回事

    操作系统处于控制状态(读取:CPU正在执行操作系统例程)并设置沙箱A以用于运行流程A的量程.

    进程A在此沙箱中执行.

    发生周期性中断,服务于此中断的例程属于操作系统,它位于沙箱之外.

    操作系统处于控制状态并设置了一个沙盒B,用于运行一个过程B的量子.

    进程B在此沙箱中执行.

这个过程重复进行.

受保护模式允许操作系统创建沙箱,特别是它定义权限(在实模式下,每个程序都具有相同的权限),以便进程A和进程B无法转义沙箱(例如,通过禁用中断并永久运行).

CPU不知道它发生了什么,它只是看到在不同特权和"约束"下执行的一系列指令.
在执行不同的程序之前,操作系统以不同的方式配置CPU.
这也有助于解释线程和进程之间的区别:线程调度不会更改沙箱.

正如Jester在评论中记得的那样,x86支持任务管理.
但是,HW任务不会将一对一映射到OS进程(IIRC主要操作系统几乎不使用此功能).

阅读英特尔手册3将帮助您了解CPU的功能以及安全操作系统的责任从CPU转移到内核的位置.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有