考虑以下有关用户级线程和内核级线程的陈述。以下哪一项陈述是错误的?
(A)内核级线程的上下文切换时间比用户级线程长。
(B)用户级线程不需要任何硬件支持。
(C)相关的内核级线程可以在多处理器系统中的不同处理器上进行调度。
(D)阻塞一个内核级线程阻塞所有相关线程。答案: (D)
解释:
内核级线程由操作系统管理,因此,线程操作是在内核代码中实现的。内核级线程还可以通过在不同处理器上拆分线程来利用多处理器系统。如果一个线程阻塞,它不会导致整个进程阻塞。内核级线程也有缺点。由于管理开销,它们比用户级线程慢。内核级上下文切换涉及的步骤不仅仅是保存一些寄存器。最后,它们不可移植,因为实现依赖于操作系统。
选项 (A):内核级线程的上下文切换时间比用户级线程长。是的,因为用户级线程由用户管理,内核级线程由操作系统管理。内核级线程管理涉及到很多开销,这些开销在用户级线程管理中是不存在的。因此,内核级线程的上下文切换时间比用户级线程的上下文切换时间长。
选项(B):用户级线程不需要任何硬件支持 True,因为用户级线程由用户管理并由库实现,用户级线程不需要任何硬件支持。
选项(C):相关内核级线程可以在多处理器系统中的不同处理器上进行调度。这是真实的。
选项 (D):阻塞一个内核级线程会阻塞所有相关线程。 false,由于内核级线程是由操作系统管理的,如果一个线程阻塞,不会导致所有线程或整个进程阻塞。
参见 https://www.geeksforgeeks.org/operating-systems-set-13/ 的问题 4
参考:
http://www.personal.kent.edu/~rmuhamma/OpSystems/Myos/threads.htm
https://www.geeksforgeeks.org/difference-between-user-level-thread-and-kernel-level-thread/
此解决方案由Nitika Bansal 提供
这个问题的测验