Linux 线程

作者: x1wan | 来源:发表于2018-12-07 14:58 被阅读14次

Linux支持内核线程,用户进程以及LWP,Linux2.6之后支持线程组概念。

内核线程是内核创建的线程,处理内核事件的,例如kthreadd,ksoftirqd,migration这些都是内核线程。只运行在内核态。

用户进程是用户通过fork创建的程序,有属于自己的资源。

LWP是通过clone创建的进程,由于LWP和父进程会共享部分资源,比如地址空间,文件系统,文件句柄,信号处理函数等,所以把LWP称为轻量级进程。

线程组其实是在task_struct中增加了tgid(thread group id)字段,一般认为Linux通过这种方式支持了线程,其中进程的tgid等于自己的pid,线程的tgid等于进程的pid。

Linux线程库主要有LinuxThreads和NPTL(Native POSIX Thread Library),LinuxThreads逐渐被NPTL取代。

LinuxThreads和NPTL都是1:1的调度模型,用户线程其实就是通过clone创建的LWP。

LinuxThreads是通过管理线程对线程进行管理的,因而在SMP系统上伸缩性较差,并且很多方面不遵循POSIX 标准。

NPTL是Linux 线程库的一个新实现,由于Linux支持了线程组,所以它不需要管理线程,实现也更符合 POSIX 的需求。


参考:

Linux 线程模型的比较:LinuxThreads 和 NPTL

Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL - xiaohuazi - 博客园

Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程


相关文章

  • 多线程编程

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

  • linux中的调度

    linux系统的线程是内核线程,所以linux系统的调度是基于线程而不是基于进程的 为了进行调度,linux系统将...

  • Linux 线程

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

  • Linux多线程编程实例解析

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

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

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

  • Linux多线程编程实例解析

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

  • Linux之多线程编程实例

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

  • Linux多线程实例解析

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

  • Linux多线程编程实例解析

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

  • 浅谈linux线程模型和线程切换

    本文从linux中的进程、线程实现原理开始,扩展到linux线程模型,最后简单解释线程切换的成本。 刚开始学习,不...

网友评论

    本文标题:Linux 线程

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