线程控制块到底是不是每个线程都有的?

线程分为用户级线程和内核级线程
在408的一个题目中说道 操作系统为每一个用户级线程创建一个线程控制块 这句话是错的
我想知道为什么呢?书上不是说系统为每个线程都配置一个线程控制块吗?

都有tcb,但是用户级线程的线程管理工作都由应用程序完成,包括创建tcb,应用程序不属于操作系统。

无论是用户级线程还是内核级线程都有TCB。“操作系统为每一个用户级线程创建一个线程控制块”这句话的错误点在于每个线程的TCB是否是由操作系统管理的。这样的话,答案肯定错误。详细解释如下
首先,现在的主流操作系统都支持线程的处理。
其中用户级别的线程的创建。撤销。调度都是有各个线程库实现的。那么相应的它的TCB是由应用程序通过线程库来进行创建,并不是由操作系统创建
而内核级线程是由操作系统进行创建,管理。撤销的。那么它的的TCB当然是由操作系统创建的。

“用户级线程”和“内核线程”不一样,你看的书上应该指的是内核线程

参考如下,有详细解释

2019年计算机考研408操作系统真题(客观题)_Hard Coder的博客-CSDN博客_操作系统为每个用户级线程建立一个线程控制块 1、下列关于线程的描述中,错误的是A.内核级线程的调度由操作系统完成B.操作系统为每个用户级线程建立一个线程控制块C.用户级线程间的切换比内核级线程间的切换效率高D.用户级线程可以在不支持内核级线程的操作系统上实现答案:B解析:应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口,内核为进程及其内部的每个线程维护上下文信息,调度也是在内核中由操作系统完成的,即A选项正确;在多线程模型中,用户级线程和内核级线程的连接方式分为多对一、一对一和多对多,操作系统为每个用户级线程建立一个线程 https://blog.csdn.net/qq_44111805/article/details/111869261