【问题标题】:Is it correct that single-threaded process can use only PCB without touching TCB?单线程进程可以只使用PCB而不接触TCB是否正确?
【发布时间】:2022-01-25 03:15:07
【问题描述】:

如标题。

有没有什么操作系统实现在运行单线程程序时,操作系统只使用PCB(Process Control Block)来存储所有相关信息?因为我从其他地方听说每个操作系统在运行单线程程序时都会在 PCB 下创建一个 TCB(线程控制块)。

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    单线程进程可以只使用PCB而不接触TCB是否正确?

    4 种常见的可能性是:

    a) 线程是可执行的东西,进程只是一个容器(包含一个虚拟地址空间、至少一个线程、文件句柄等)。在这种情况下,您可能会拥有 PCB 和 TCB 之类的东西(即使进程只有一个线程)。大多数现代操作系统都是这样的。

    b) “任务”是可执行的东西。在底层“任务”之上模拟进程、线程和一堆奇怪的东西(例如共享文件句柄但不共享虚拟地址空间的任务)。在这种情况下,PCB 和 TCB(线程控制块)没有意义(你会有一个“任务控制块”,就像所有东西合并在一起一样)。现代 Linux 就是这样。

    c) 从内核的角度来看,进程是可执行的东西,线程不存在/不受支持(但可以在用户空间中模拟)。在这种情况下,TCB 没有意义。旧的 Unix 系统(包括旧版本的 Linux)是这样的。

    d) 只有一个进程,线程不存在;没有PCB,也没有TCB。 MS-DOS 就是这样的。

    请注意,也有不常见的可能性。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多