Process 进程的程序计数器

Process 进程的程序计数器,process,operating-system,kernel,Process,Operating System,Kernel,我认为程序计数器是硬件的一部分。读了下面的内容后,我感到困惑。有人能解释一下区别吗 单线程进程有一个程序计数器,指定下一个 要执行的指令。(螺纹在第章中介绍 4.)该过程的执行必须是连续的。CPU一个接一个地执行进程的一条指令,直到 过程完成。此外,在任何时候,最多只能使用一条指令 代表流程执行。因此,尽管可能需要两个过程 与同一个项目相关,它们被认为是两个 单独的执行序列。多线程进程具有多个 程序计数器,每个计数器指向要执行的下一条指令 给定的线程 没错。有一个程序计数器是内存地址寄存器。然而

我认为程序计数器是硬件的一部分。读了下面的内容后,我感到困惑。有人能解释一下区别吗

单线程进程有一个程序计数器,指定下一个 要执行的指令。(螺纹在第章中介绍 4.)该过程的执行必须是连续的。CPU一个接一个地执行进程的一条指令,直到 过程完成。此外,在任何时候,最多只能使用一条指令 代表流程执行。因此,尽管可能需要两个过程 与同一个项目相关,它们被认为是两个 单独的执行序列。多线程进程具有多个 程序计数器,每个计数器指向要执行的下一条指令 给定的线程


没错。有一个程序计数器是内存地址寄存器。然而,操作系统虚拟地为每个进程创建程序计数器,并通过这些PC控制它们的流程。这就是调度,这是操作系统的主要功能。

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

当今大多数现代操作系统都是多任务的。这本质上意味着它们可以同时运行多个进程。然而,如果您只有一个处理器,那么您不可能同时执行多个进程,对吗?为了产生这样一种错觉,即多个进程同时在一个处理器上执行,多任务操作系统在可运行进程之间切换得非常快:它们推进一个进程,暂停它,然后推进另一个进程,以此类推,所有这些都在几分之一秒内完成


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

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


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

我觉得这回答了OP提出的问题,而Pablo解释了PC和多道程序设计的概念。