我对所有这些实体以及它们在 Linux 中如何互连感到有点困惑。 《Unix 内部原理》一书指出lightweight process (LWP)
是内核支持的用户线程,并且该内核看不到进程内的线程。对于 Linux 来说仍然如此吗?
据我了解,用户空间线程在进程内部调度,通过更高级别的抽象为pthread
库,无需内核干预。我对吗?
在 Linux 上的 pthread 中,线程调度由内核处理。
在 Linux 中,线程或进程是通过以下命令创建的:clone()
系统调用(fork()
是克隆的特例)。根据传递给克隆的选项,新创建的进程将更轻或更重(即具有单独的内存空间和一组单独的文件描述符等)。pthread_create()
uses clone()
以最小程度的分离。
也可以根本不使用本机线程,而是使用线程的完全用户空间实现,使用setjmp()
and longjmp()
。例如,这可以用于实现某些解释语言。但是,我不知道实际实现其自己的用户空间调度程序的程序或库的具体示例。
还有一件事:“内核线程" 通常用于指定在内核空间中运行的线程,即它是内核本身的一部分。ps
此类线程是可识别的,因为它们被方括号包围,例如[kthreadd]
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)