美文网首页
Linux下是否有线程概念?

Linux下是否有线程概念?

作者: 栗子_2019 | 来源:发表于2017-10-12 09:54 被阅读0次

前天去面试,问到性能测试过程中如何定位性能问题,然后从里面牵扯出一个问题,Linux下有没有线程?

自己这块没研究过,只记得在学校里面学《操作系统原理》的时候提到过线程的概念,面试官告诉我Linux下没有线程的概念,我所说的线程是子进程的概念。回来后自己查了下,发现网络上对Linux下是否有线程的说法也不一样,看了一些别人写的文章,总结下来如下所述:

Linux下存在着“pthread库”,线程库,既然存在线程库那么就意味着存在着线程。在Linux的内核中,进程是进行调度的最小单位,并没有真正的对线程的支持,可以说线程只是用户空间的概念,在内核中只能用进程来实现线程。一个进程的多个线程在内核中只是多个特殊的进程,它们虽然有各自的进程描述结构,却共享同一个代码上下文。在Linux上,这样的进程称为轻量级进程(Light weight process)。

同时,Linux内核提供了clone()系统调用,用来创建进程的一个拷贝,这个拷贝与被拷贝的进程共享相同的地址空间。LinuxThreads 项目正是使用这个调用来完全在用户空间模拟对线程的支持。这个任务在当时内核支持不够的条件下,具体的实现非常复杂。

由于内核并没有线程组的概念,LinuxThreads模型只能在pthread库中,对每个进程下的线程组都增加一个额外的线程来进行管理,这就是LinuxThreads模型中著名的管理线程(Manager Thread)。这个管理进程负责对管理同一进程下的其他线程的创建、退出,资源的分配和回收,及线程切换等,非常复杂,开销也很大,而且一旦管理线程被杀死,其他线程都不能正确回收。另外,由于当时内核中缺乏对线程同步操作的支持,因此pthread库中的互斥量mutex等只能采用信号来实现,效率非常低。LinuxThreads模型在某些方面也不符合POSIX标准,比如用它在同一进程中创建的线程,都有自己唯一的进程ID,而不是同一个ID,而且接收信号的时候也只能按线程接收。

相关文章

  • Linux下是否有线程概念?

    前天去面试,问到性能测试过程中如何定位性能问题,然后从里面牵扯出一个问题,Linux下有没有线程? 自己这块没研究...

  • JAVA并发编程-基本概念

    基本概念 程序、进程、线程之间的概念 程序是静态的概念windows下通常指exe 文件 linux 下 ja...

  • 线程

    线程的概念 线程:light weight process,轻量级的进程,Linux环境下本质上仍是进程。和进程的...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

  • Linux 线程

    Linux支持内核线程,用户进程以及LWP,Linux2.6之后支持线程组概念。 内核线程是内核创建的线程,处理内...

  • Java--线程

    线程是什么?在计算机设计初期,并没有线程的概念,只有进程,linux系统下没有真正意义的线程,只有进程,c语言中的...

  • Linux多线程编程实例解析

    Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件...

  • Linux C语言多线程编程实例解析

    Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件...

  • Linux多线程编程实例解析

    Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件...

  • Linux之多线程编程实例

    Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件...

网友评论

      本文标题:Linux下是否有线程概念?

      本文链接:https://www.haomeiwen.com/subject/dsawyxtx.html