同一进程多线程并行运行时,PCB的程序计数器取值疑问
多线程进程中PCB程序计数器的状态说明
在多线程的操作系统模型中,进程控制块(PCB)内的程序计数器(PC)是没有实际运行时作用的。
原因如下:
- 线程是操作系统调度执行的基本单位,每个线程的
线程控制块(TCB)中已经独立存储了自身的程序计数器,用来记录当前线程执行到的指令地址,CPU调度线程时直接读取对应TCB里的PC值。 - 进程仅作为资源分配的基本单位,负责管理地址空间、文件句柄等共享资源,并不参与具体的指令执行调度。当进程内多个线程并行运行时,CPU的调度对象是线程而非进程,因此PCB中的PC值要么处于未使用的无效状态,要么仅保留进程启动时的初始入口地址,但这个值对当前运行的线程没有任何指导意义。
对应你描述的场景:T1、T2在Core1上运行,T3、T4在Core2上并行执行,所有线程都依赖自身TCB中的PC推进指令执行,PCB的程序计数器完全不参与实际的运行流程。
内容的提问来源于stack exchange,提问作者Neetu Das
相关产品推荐
相关产品推荐

