首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工艺状态保持在PCB中,线程状态保持在TCB中。

工艺状态保持在PCB中,线程状态保持在TCB中。
EN

Stack Overflow用户
提问于 2015-12-06 14:07:31
回答 1查看 507关注 0票数 0

假设流程p0已经创建。P0有两个线程(主线程) t0和t1。所以在某个地方有PCB0代表p0,TCB0代表t0,TCB1代表t1。(为简单起见,5个执行状态:创建、准备、运行、阻塞、终止)

  1. 当p0的线程至少有一个处于运行状态时,它就处于运行状态?
  2. 当然,在TCB中必须有一个用于线程状态的字段。如果p0状态可以直接从它的线程状态计算:在PCB中是否有执行状态的字段,为什么?
  3. 如果2中的答案是肯定的:每次线程状态发生变化时,我们必须检查所有进程线程的状态以保持PCB.state的最新状态吗?这不是多余的?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-06 17:53:40

当p0的线程至少有一个处于运行状态时,它就处于运行状态?

不是每次都是。进程状态和线程状态可能不同。因此,当线程处于运行状态时,没有必要保持p0处于运行状态,它可以处于块状态或就绪状态。线程和进程之间的一些可能情况:

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

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

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

当然,在TCB中必须有一个用于线程状态的字段。

是的,tcb中有状态字段(例如运行、终止、准备、块等)。

PCB中是否有执行状态的字段,为什么?

是的,PCB中也有状态场。但是它不是从tcb状态计算出来的,因为正如我告诉过的那样,这两种状态可能是不同的。线程通常会调用不同的过程,从而产生不同的执行历史。

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

-> 请检查此链接以供参考。

-> 检查TCB的内容链接电路板

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34118292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档