在单个CPU上运行多个进程

时间:2014-05-16 17:23:00

标签: process operating-system cpu cpu-registers

我想知道如何单个CPU 我认为它有一个cpu堆栈和一个注册表集(每个寄存器只有一个实例)运行同时进行多个流程?

每次更改堆栈和寄存器时,它是否会更改当前正在运行的进程?例如,进程X在0x03中的值为EAX,但进程Y在该寄存器上的值为0x02。那么当CPU从执行X进程的指令切换到执行Y进程的指令时,CPU如何处理切换EAX寄存器的值? (因为每个过程都与预期的EAX一起使用 - 之前存储在那里的那个

我无法找到有关此信息,但我会接受链接到相关信息来源的答案。

很抱歉,如果问题不清楚,我会尽可能地澄清一下,所以请问是否还有不清楚的地方。

注意: 我不是指线程,因为据我所知,我使用相同的寄存器,编译器会构建正确的代码,以便它们能够很好地协同工作。 (如果我错了请纠正我!)

2 个答案:

答案 0 :(得分:4)

单个处理器中的并发只会在一段时间内中断进程,并让另一个进程执行。当然,每个进程都有不同的寄存器,包括指向当前使用的堆栈位置 - 这个信息称为 context

每当进程进入挂起模式时,其上下文将保存在内存/堆栈中。然后,处理器恢复(或创建)新进程的上下文。当第一个进程再次执行时,其上下文将被恢复。

上下文切换由软件(操作系统)或硬件完成。

答案 1 :(得分:0)

处理器定义上下文块结构。名称和格式取决于系统。处理器通常只有一条指令来保存当前进程上下文并加载进程上下文。

操作系统维护进程上下文块并指示处理器加载和保存。

进程上下文包含所有通用寄存器,指示标志寄存器和地址空间定义寄存器的值。数据量相当大,因此加载和保存过程上下文往往是一个相对冗长的过程。