程序的程序计数器

时间:2015-02-06 13:29:28

标签: process operating-system kernel

我认为程序计数器是硬件的一部分。阅读以下内容后我感到困惑。有人能澄清区别吗?

  

单线程进程有一个程序计数器指定下一个   执行指令。 (主题见第3章   4.)这样一个过程的执行必须是顺序的。 CPU一个接一个地执行一个指令,直到   过程完成。此外,在任何时候,最多一条指令是   代表流程执行。因此,尽管可能有两个过程   与相同的程序相关联,它们被认为是两个   单独的执行序列。多线程进程有多个   程序计数器,每个都指向要执行的下一条指令   一个给定的线程。

3 个答案:

答案 0 :(得分:10)

每个CPU都有一个硬件程序计数器。每个线程都有一个程序计数器VALUE,它只在线程执行时加载到硬件程序计数中。

如果在多处理系统上执行,则进程可能有多个硬件程序计数器。每个线程可以在单独的处理器上运行,并在该处理器上有一个程序计数器。

答案 1 :(得分:5)

正如你所说,“程序计数器”(也称为“指令指针”)是硬件的一部分;更具体地说,它是一个处理器寄存器。该寄存器的整个目的是指向处理器正在执行的存储器中的当前指令。执行该指令后,PC将被更改为指向要执行的下一条指令。

如今大多数现代操作系统都是多任务处理。这实际上意味着它们可以同时运行多个进程。但是,如果您只有一个处理器,那么您无法同时执行多个进程,对吧?为了创建这样的错觉,即多个进程在一个处理器上同时执行多个进程,多任务操作系统可以非常快速地在可运行进程之间切换:它们推进一个进程,暂停它,然后它们推进其他进程,依此类推这一切都在一瞬间。

要实现此机制,操作系统必须具有适当的结构以保持所有正在运行的进程的当前状态。操作系统应该保留在这些结构中的最重要的值之一是该进程的当前PC值,它指示其程序代码中当前正在执行的位置。

答案 2 :(得分:3)

那是真的。有一个程序计数器是一个存储器地址寄存器。但是,操作系统虚拟地为每个进程创建程序计数器,并使用这些PC控制它们的流量。这是调度,这是操作系统的主要特征。