我在理解 Tanenbaum 现代操作系统书中的这段话时遇到了一些问题:
“我们看到四个进程,每个进程都有自己的控制流(即,它自己的逻辑程序计数器),并且每个进程都独立于其他进程运行。当然,只有一个物理程序计数器,所以当每个进程运行时,它的逻辑程序计数器被加载到实际程序计数器中”。这是段落中所示的图表。
我遇到的问题是不是每个进程都有自己的程序计数器吗?并且由于每个程序已经是一个正在执行的单独进程,为什么它需要加载回“真实”程序计数器?我不明白这个真正的程序计数器是从哪里来的?
为什么它需要加载回“真实”程序计数器?
当 Tanenbaum 说“真正的程序计数器”时,他指的是与 CPU 关联的单个程序计数器。程序计数器只是另一个 CPU 寄存器,但它有一个特定的用途,即指向当前正在执行的指令。
不是每个进程都有自己的程序计数器吗?
每个进程都有自己的程序计数器 (PC),但每个处理器内核只有一台 PC。因此,当一个进程在 CPU 上运行时,内核会将 PC 寄存器设置为该进程保存的 PC。如果进程暂时停止,则内核将进程 PC 从 PC 寄存器保存到内存中某个明确定义的位置。
每个进程都有一些与之相关的簿记,其中之一是进程的寄存器状态。因此,当前未运行的每个进程都将其 PC 保存在内存中。