`
cloudeagle_bupt
  • 浏览: 538158 次
文章分类
社区版块
存档分类
最新评论

Linux线程机制总结

 
阅读更多
Linux2.0~2.4 : LinuxThreads库 每一个执行实体都是task_struct结构, 映射 1: 1,但需要增加管理线程。对Posix标准兼容的不好。
已被NPTL取代


Linux2.6 : NPTL(Native POSIX Threading Library)
实现方式: 类似LWP(轻量级进程) 用户线程:内核线程映射 1:1, 因为一个pThread(注: 这里pthread正确理解应为一种用户线程和内核线程的映射方式,之前理解为一种线程是错误的! )创建最终调用clone函数
(fork()、vfork()最终也调用该函数)创建一个内核可见的用户线程且由内核调度(但该可见线程是否需要在内核中创建对应内核线程?), 目前被结合入glibc库。


以上是linux线程库的发展历程。


还有两类目前不用的:
1. 1:N 即多个用户线程对应一个内核进程,因为内核一次只能给一个进程分配一个CPU,其他线程只能等,不适合多处理器。此外如果一个线程阻塞,该进程中的所有线程都被阻塞,直至该阻塞操作结束。
被抛弃。


2. 多对多 NGPT(Next Generation POSIX Threads) 即M:N模型(M个线程对应N个内核级线程), 也就是说若干个线程可能是在同一个执行实体上实现的,并发性较高,因此性能上有优势。按照2003年3月NGPT官方网站上的通知,NGPT考虑到NPTL日益广泛地为人所接受,为避免不同的线程库版本引起的混乱,今后将不再进行进一步开发,而今进行支持性的维护工作。也就是说,NGPT已经放弃与NPTL竞争下一代Linux POSIX线程库标准。
但在商业环境如UNIX上仍有应用。




参考 Linux 线程实现机制分析 国防科技大学计算机学院”的“Linux 线程实现机制分析”。
分享到:
评论

相关推荐

    线程局部存储机制总结

    主要分析线程局部存储机制的实现,稍微底层了一点点

    linux系统编程之线程.zip

    【练习】:编写多线程程序,总结exit、return、pthread_exit各自退出效果。 return:返回到调用者那里去。 pthread_exit():将调用该函数的线程 exit: 将进程退出。 pthread_join函数 阻塞等待线程退出,获取...

    Win丨linux丨操作系统实验二:生产者——消费者问题

    2. 在Linux操作系统上,利用Pthread API提供的信号量机制,编写应用程序实现生产者——消费者问题。 3. 两种环境下,生产者和消费者均作为独立线程,并通过empty、full、mutex三个信号量实现对缓冲进行插入与删除。 ...

    linux线程间的同步与互斥知识点总结

    是一种同步机制,一个线程用于修改这个变量使其满足其它线程继续往下执行的条件,其它线程则接收条件已经发生改变的信号。 条件变量操作? 初始化和销毁 pthread_cond_wait 条件不满足 会释放锁并阻塞等待 , 这个函数是...

    Linux 蓝牙协议栈的USB+设备驱动

    处理器平台、多处理器平台及超线程系统。 BlueZ 由多个独立的模块组成,内核空间主要包括设备 驱动层、蓝牙核心及 HCI 层、L2CAP 与 SCO 音频层、 RFCOMM, BNEP, CMTP 与 HIDP 层、通用蓝牙 SDP 库和后 台服务及...

    Linux2.6内核标准教程(共计8-- 第1个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    Linux2.6内核标准教程(共计8--第6个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    Linux2.6内核标准教程(共计8--第8个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    Linux2.6内核标准教程(共计8--第3个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    Linux2.6内核标准教程(共计8--第7个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    史上最强的嵌入式底层驱动开发课程 Linux系统开发+Linux高级程序+主板开发+ARM等

    │ ├16 - Linux命令类库机制及常用命令_命令操练1.mp4 │ ├17 - 命令操练2.mp4 │ ├18 - 命令操练3.mp4 │ ├19 - 命令操练4.mp4 │ ├20 - 命令操练5.mp4 │ ├21 - 命令操练6.mp4 │ ├22 - 命令操练7.mp4 │ ...

    Linux高性能服务器编程

    多线程编程 14.1 Linux线程概述 14.1.1 线程模型 14.1.2 Linux线程库 14.2 创建线程和结束线程 14.3 线程属性 14.4 POSIX信号量 14.5 互斥锁 14.5.1 互斥锁基础API 14.5.2 互斥锁属性 14.5.3 死锁举例 ...

    Linux程序设计 第4版.haozip01

    12.8 多线程 438 12.9 小结 442 第13章 进程间通信:管道 443 13.1 什么是管道 443 13.2 进程管道 444 13.3 将输出送往popen 445 13.3.1 传递更多的数据 446 13.3.2 如何实现popen 447 13.4 pipe调用 449 ...

    Linux程序设计 第4版.haozip02

    12.8 多线程 438 12.9 小结 442 第13章 进程间通信:管道 443 13.1 什么是管道 443 13.2 进程管道 444 13.3 将输出送往popen 445 13.3.1 传递更多的数据 446 13.3.2 如何实现popen 447 13.4 pipe调用 449 ...

    Linux2.6内核标准教程(共计8--第4个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    Linux2.6内核标准教程(共计8--第2个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    Linux2.6内核标准教程(共计8--第5个)

    最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关...

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    读核感悟 伪装现场 内核线程: 17 读核感悟 伪装现场 信号通信 19 读核感悟 kbuild系统 内核模块的编译 22 读核感悟 kbuild系统 编译到内核和编译成模块的区别 24 读核感悟 kbuild系统 make bzImage的过程 26 读核...

    网络编程教程,很好的一本写linux网络编程书,这是我上传的源码

     15.3.3 多进程的并发服务器和多线程的并发服务器  15.3.4 客户端进程的多线程化  本章小结 第十六章 网络售票系统的简单模拟  16.1 系统的总体设计  16.1.1 应用的说明  16.1.2 数据格式的...

    Linux内核阅读

    读核感悟-伪装现场-内核线程:...............................................17 读核感悟-伪装现场-信号通信.................................................19 读核感悟-kbuild系统-内核模块的编译.............

Global site tag (gtag.js) - Google Analytics