【发布时间】:2022-01-09 12:59:48
【问题描述】:
我一直想知道同时运行的多个程序如何使用 CPU 寄存器而不会导致 Windows 操作系统上的程序之间发生冲突。
Windows 操作系统是否使用“虚拟寄存器”来避免这种情况(多个程序同时使用相同的寄存器)?
如果两个程序使用eax 寄存器,操作系统真的会改变物理eax 寄存器吗?
或者像我上面提到的那样使用一些“虚拟寄存器”?
【问题讨论】:
-
如果你有多个内核,你也有多个寄存器文件。这是多个程序实际同时运行的唯一方式。操作系统还执行多任务处理,即在线程之间调度内核,以便它们看起来同时运行。当 CPU 分配给一个新线程时,前一个的寄存器状态被保存并加载新的。这称为上下文切换。
标签: windows assembly operating-system cpu-registers context-switch