编写用于实现线程库的代码是内核代码的一部分吗? pthread_create()等函数的实现是内核的一部分吗?
答案 0 :(得分:5)
在Linux中,pthread_create()
等。是作为glibc项目的一部分实现的。它使用(非可移植的,特定于Linux的)系统调用clone()
。 (Linux的fork()
也是以clone()
的形式实现的。一些BSD也有类似的系统调用rfork()
。
我的理解是clone()
或rfork()
都会创建一个新进程,但你可以指定一个标志,说“使用copy-on-write语义为它提供不同的地址空间” 。因此,如果你想要fork()
,你可以指定那个标志,但是如果你想创建一个线程,你就不需要,并且最终得到一个共享地址空间。
(编辑以提供更多细节)
答案 1 :(得分:3)
线程有时纯粹在用户空间中实现(然后也称为“绿色线程”),但通常在内核空间中实现。 wikipedia article很好地解释了它。