当前位置: 技术问答>linux和unix
为什么linux没有在内核实现多线程机制
来源: 互联网 发布时间:2016-06-04
本文导语: 为什么linux没有在内核实现多线程机制。就我所知,Linux上的两个线程机制的实现:LinuxThreads和NPTL都是借助于clone这个系统调用,在内核中并没有真正的实现多线程。我想问问linux为什么没有在内核上实现多线程。 ...
为什么linux没有在内核实现多线程机制。就我所知,Linux上的两个线程机制的实现:LinuxThreads和NPTL都是借助于clone这个系统调用,在内核中并没有真正的实现多线程。我想问问linux为什么没有在内核上实现多线程。
|
windows我不熟悉,但是感觉在windows下面,thread和process是两种不同的东西,自然是后者包含前者,而且在
内核中,应该也是用两个数据结构来表示的。
在Solaris里面,一个进程包含一个或多个线程,而一个用户线程又对应于轻量级内核进程(LWP),一个LWP又对
应于一个内核线程,在内核里面可以直接调度到线程级别。在Solaris下,这三个东东分别用不同的数据结构来表
示的,详细的可以参考这本书《Solaris内核结构》(第二版)
而在linux下面,线程和进程是平行的,线程不存在单独的数据结构,当创建一个线程的时候,在内核中用的也是
进程的TCB。说的不严密一点,在Linux下可以认为,进程完全是去申请资源的,而实际干活的就是线程了。进程是
地主,家有良田千亩,但是不自己种,而是雇了很多的长工(线程)来干活,长工要是缺什么了,直接去找地要,
地主再出去申请。
内核中,应该也是用两个数据结构来表示的。
在Solaris里面,一个进程包含一个或多个线程,而一个用户线程又对应于轻量级内核进程(LWP),一个LWP又对
应于一个内核线程,在内核里面可以直接调度到线程级别。在Solaris下,这三个东东分别用不同的数据结构来表
示的,详细的可以参考这本书《Solaris内核结构》(第二版)
而在linux下面,线程和进程是平行的,线程不存在单独的数据结构,当创建一个线程的时候,在内核中用的也是
进程的TCB。说的不严密一点,在Linux下可以认为,进程完全是去申请资源的,而实际干活的就是线程了。进程是
地主,家有良田千亩,但是不自己种,而是雇了很多的长工(线程)来干活,长工要是缺什么了,直接去找地要,
地主再出去申请。