假设流程p0已经创建。P0有两个线程(主线程) t0和t1。所以在某个地方有PCB0代表p0,TCB0代表t0,TCB1代表t1。(为简单起见,5个执行状态:创建、准备、运行、阻塞、终止)
发布于 2015-12-06 17:53:40
当p0的线程至少有一个处于运行状态时,它就处于运行状态?
不是每次都是。进程状态和线程状态可能不同。因此,当线程处于运行状态时,没有必要保持p0处于运行状态,它可以处于块状态或就绪状态。线程和进程之间的一些可能情况:
进程处于就绪状态,进程的一个线程处于运行状态。
进程处于阻塞状态,进程的一个线程处于运行状态。
例如,当线程应用程序作为包含单个线程的进程启动时。当时,进程处于运行状态。然后应用程序使用用户级线程库来创建其他线程。现在,当线程A开始运行时,它将进入正在运行的state.Suppose线程A,进行I/O系统调用。在这种情况下,控制被转移到阻止进程.In的内核--这种情况下线程A仍然在运行,即使进程处于阻塞状态。这是进程被阻塞但线程正在运行时的示例之一。
当然,在TCB中必须有一个用于线程状态的字段。
是的,tcb中有状态字段(例如运行、终止、准备、块等)。
PCB中是否有执行状态的字段,为什么?
是的,PCB中也有状态场。但是它不是从tcb状态计算出来的,因为正如我告诉过的那样,这两种状态可能是不同的。线程通常会调用不同的过程,从而产生不同的执行历史。
希望你满意我的回答。祝你好运:-)
-> 请检查此链接以供参考。
-> 检查TCB的内容链接和电路板
https://stackoverflow.com/questions/34118292
复制相似问题