我目前正在学习操作系统,我很难理解有关Implementing Multi-Threaded Processes
.
具体来说,教科书解释说,我们可以通过名为Per-Processor Kernel Threads
. 该系统的详细说明如下:
当应用程序启动时,用户级线程库为主机上的每个处理器创建一个内核线程。只要系统上没有其他活动,内核就会为这些线程中的每一个分配一个处理器。每个内核线程并行执行用户级调度程序:将下一个线程从用户级就绪列表中拉出,并运行它。因为线程调度决策发生在用户级别,它们可以是灵活的和特定于应用程序的。
但是,接下来也提到了这个系统有一些缺点,类似于绿线。下面提到的一些缺点
任何时候用户级线程调用内核,它的宿主内核线程都会阻塞。这可以防止线程库同时在该处理器上运行不同的用户级线程。
每当内核对内核线程进行时间切片时,它正在运行的用户级线程也会被挂起。在内核线程恢复之前,该库无法恢复该线程。
我不能完全理解他们两个。这是我的问题。
- 如果一个用户级线程调用内核,为什么宿主内核线程会阻塞在这个系统中?
- 是什么
kernel time-slices a kernel thread
意思? - 如果内核对内核线程进行时间切片,为什么用户级线程运行被挂起?
谢谢。