Dan*_*lay 3 cpu operating-system process cpu-registers
我不知道如何可以在单个CPU,这我相信有一个CPU堆栈和一个注册表中设置(这里只有一个实例,每个寄存器),运行多个进程同时?
每次更改当前正在运行的进程时,它是否会更改堆栈和寄存器?例如,进程 X在该寄存器中具有值0x03,EAX但进程 Y0x02在该寄存器中具有该值。那么当CPUEAX从执行X进程的指令切换到执行Y进程的指令时,CPU是如何处理寄存器值的切换呢?(因为每个进程都按照EAX预期工作 - 它之前存储在那里的那个)
我找不到关于此的信息,但我会接受链接到相关信息来源的答案。
对不起,如果问题不清楚,我试图尽可能地澄清它,所以请询问是否还有任何不清楚的地方。
注意: 我不是指线程,因为据我所知,那些使用相同的寄存器并且编译器构建正确的代码,以便它们都能很好地协同工作。(如果我错了请纠正我!)
单个处理器中的并发只是中断一个进程一段时间,并让另一个进程执行。当然,每个进程都有不同的寄存器,包括指向它当前使用的堆栈位置的一个点——这个信息被称为上下文。
每当进程进入挂起模式时,其上下文都会保存在内存/堆栈中。然后处理器恢复(或创建)新进程的上下文。当第一个进程要再次执行时,它的上下文被恢复。
这种上下文切换由软件(操作系统)或硬件完成。
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |