用户线程到内核线程的多对一映射

时间:2015-11-06 02:28:49

标签: linux multithreading process linux-kernel operating-system

据我了解,在多对一映射中,一个内核线程管理许多用户线程。这个内核线程可以帮助用户线程进行系统调用等。我不明白的是:

  1. 如果单个阻塞调用,我们为什么要进行多对一映射 阻止内核线程管理的所有用户线程?
  2. 在用户线程到内核线程的多对一映射中,执行所有操作 用户线程必须来自同一个进程吗?
  3. 在多对一映射中,所有用户线程都可以在不同的位置运行 核心/ CPU是一次运行还是只运行其中一个?

1 个答案:

答案 0 :(得分:2)

  

1)如果单个阻塞调用,为什么我们有多对一映射   阻止内核线程管理的所有用户线程?

当线程之间存在上下文切换时,具有一对一映射的缺点是内核的参与。内核的参与导致了几个开销。

  

2)在用户线程到内核线程的多对一映射中,执行所有操作   用户线程必须来自同一个进程吗?

  

3)在多对一映射中,所有用户线程都可以在不同的上运行   核心/ CPU一次或只是其中一个运行?

具有多对一映射的专业特性是整个线程上下文切换由您使用的用户级线程库维护,就内核而言,它不知道您有多少线程给出进程是一个执行的时间片,由线程库来控制任何线程。从这里,您可以很容易地看到,在任何时刻的多对一映射中,只有该进程的一个线程可以获得控制权。