保持PCB和线程状态的过程状态保存在TCB中

时间:2015-12-06 14:07:31

标签: operating-system

假设已创建过程p0。 P0有两个线程(主线程)t0和t1。所以某处有p0的PCB0,t0的TCB0和t1的TCB1。 (为简单起见,5个执行状态:创建,准备,运行,阻止,终止)

  1. 当至少有一个线程处于运行状态时,p0处于运行状态?

  2. 在TCB中肯定有一个线程状态字段。如果p0状态可以直接从它的线程状态计算出来:PCB中是否有执行状态字段,为什么?

  3. 如果2中的答案是肯定的:每次线程状态发生变化时,我们都必须检查所有进程的状态'线程,以保持PCB.state最新?这不是多余的吗?

1 个答案:

答案 0 :(得分:1)

  

当至少有一个线程进入时,p0处于运行状态   运行状态?

不是每次都是。进程状态和线程状态可以不同。因此,当线程处于运行状态时p0仍然处于运行状态时,它可能处于阻塞或就绪状态。线程和进程之间可能存在的一些情况:

进程处于就绪状态,其中一个进程的线程处于运行状态。

进程被阻塞状态,其中一个进程的线程处于运行状态。

e.g。当线程应用程序作为包含单个线程的进程启动时。那时进程处于运行状态。然后,应用程序使用用户级线程库来创建其他线程。现在,当线程A开始运行时,它将进入运行状态。假设线程A进行I / O系统调用。在这种情况下,控制权将转移到阻止进程的内核。在这种情况下,即使进程处于阻塞状态,线程A仍在运行。这是进程被阻止但线程正在运行的示例之一。

  

在TCB中肯定有一个线程状态字段。

是的,在tcb中有状态字段(例如,运行,终止,就绪,阻止等)。

  

PCB中是否存在执行状态字段?为什么?

是的,PCB中也有状态字段。但它不是从tcb状态计算的,因为我告诉两个状态可能不同。线程通常会调用不同的过程,从而调用不同的执行历史。

希望你满意我的答案。祝你好运: - )

---> Check this link for reference

---> check link for content of TCBPCB