题67

题目

【2019 统考真题】下列关于线程的描述中, 错误的是 ( )。
A. 内核级线程的调度由操作系统完成
B. 操作系统为每个用户级线程建立一个线程控制块
C. 用户级线程间的切换比内核级线程间的切换效率高
D. 用户级线程可以在不支持内核级线程的操作系统上实现

分析

应用程序没有进行内核级线程管理的代码, 只有一个到内核级线程的编程接口, 内核为进程及其内部的每个线程维护上下文信息, 调度也是在内核中由操作系统完成的, A正确。
用户级线程的控制块是由用户空间的库函数维护的, 操作系统并不知道用户级线程的存在, 用户级线程的控制块一般存放在用户空间的数据结构中, 如链表或数组, 由用户空间的线程库来管理。
操作系统只负责为每个进程建立一个进程控制块, 操作系统只能看到进程, 而看不到用户级线程, 所以不会为每个用户级线程建立一个线程控制块。
但是, 内核级线程的线程控制块是由操作系统创建的, 当一个进程创建一个内核级线程时, 操作系统会为该线程分配一个线程控制块, 并将其加入内核的线程管理数据结构, B错误。
用户级线程的切换可以在用户空间完成, 内核级线程的切换需要操作系统帮助进行调度, 因此用户级线程的切换效率更高, C正确。
用户级线程的管理工作可以只在用户空间中进行, 因此可以在不支持内核级线程的操作系统上实现, D正确。

B
记住一个核心理念,操作系统眼里是没有线程