【发布时间】:2014-07-05 06:05:09
【问题描述】:
我想知道单个 CPU 怎么能,我认为它有一个 cpu 堆栈和一个注册表集(每个寄存器只有一个实例),运行多个进程同时进行?
每次更改当前正在运行的进程时,它是否会更改堆栈和寄存器?例如,进程 X 在 EAX 中具有值 0x03,但进程 Y 在该寄存器上具有值 0x02。那么,当 CPU 从执行 X 进程的指令切换到执行 Y 进程的指令时,CPU 是如何处理切换EAX 寄存器的值的呢? (因为每个进程都使用它预期的EAX - 它之前存储在那里的那个)
我无法找到有关此的信息,但我会接受链接到具有相关信息的来源的答案。
对不起,如果问题不清楚,我试图尽可能地澄清它,所以如果还有什么不清楚的地方,请询问。
注意: 我不是指线程,因为据我所知,它们使用相同的寄存器并且编译器构建正确的代码,以便它们都能很好地协同工作。 (如果我错了,请纠正我!)
【问题讨论】:
-
线程实际上与进程非常相似,只是它们共享地址空间和文件描述符等操作系统资源。
-
@Mephy 谢谢,这正是我一直在寻找的解释!您可能想写一个答案,以便我接受。
标签: process operating-system cpu cpu-registers