操作系统维护的线程表中是否有用户级线程的条目?

时间:2017-09-02 07:06:08

标签: multithreading operating-system

我正在研究ULT和KLT并考虑到这一点。如果操作系统无法区分ULT和进程,那么它的线程表中是否有任何ULT条目?

2 个答案:

答案 0 :(得分:2)

  

如果操作系统无法区分ULT和进程,则可以   它的线程表中有任何ULT条目吗?

否 - 就操作系统而言,用户级线程不存在。相反,只有一个线程/进程,通过调用setjmp()和longjmp()来做“有趣的事情”。

答案 1 :(得分:2)

没有

操作系统(内核)只知道内核级线程,并且不了解用户级线程。用户级线程由提供线程功能的用户库管理。

例如,Linux不区分线程和进程。可以调度的实体由task_struct数据结构表示。 因此,当您的库想要创建一些线程时,它会要求内核创建(使用clone())相应的task_structs。您的库可能只需要一个task_struct,在这种情况下,所有用户级线程都在同一个task_struct上进行多路复用,或者它可能会为每个用户级线程请求一个task_struct,在这种情况下,内核可以考虑每个用户级线程进行调度,因为每个thread有一个task_struct。

总而言之,我们可以这么说 内核只知道内核级线程。用户级线程由相应的库创建和管理。