Linux 线程实现机制分析
日期:2008年2月24日 作者: 查看:[大字体 中字体 小字体]-
不论哪种组织方式,线程描述结构总是位于栈顶紧邻堆栈的位置。4.线程id和进程id
每个LinuxThreads线程都同时具有线程id和进程id,其中进程id就是内核所维护的进程号,而线程id则由LinuxThreads分配和维护。__pthread_initial_thread 的线程id为PTHREAD_THREADS_MAX,__pthread_manager_thread的是 2*PTHREAD_THREADS_MAX+1,第一个用户线程的线程id为PTHREAD_THREADS_MAX+2,此后第n个用户线程的线程 id遵循以下公式tid=n*PTHREAD_THREADS_MAX+n+1这种分配方式保证了进程中所有的线程(包括已经退出)都不会有相同的线程id,而线程id的类型pthread_t定义为无符号长整型(unsigned long int),也保证了有理由的运行时间内线程id不会重复。
从线程id查找线程数据结构是在pthread_handle()函数中完成的,实际上只是将线程号按PTHREAD_THREADS_MAX取模,得到的就是该线程在__pthread_handles中的索引。5.线程的创建
在pthread_create ()向管理线程发送REQ_CREATE请求之后,管理线程即调用pthread_handle_create()创建新线程。分配栈、设置thread 属性后,以pthread_start_thread()为函数入口调用__clone()创建并启动新线程。pthread_start_thread ()读取自身的进程id号存入线程描述结构中,并根据其中记录的调度方法配置调度。一切准备就绪后,再调用真正的线程执行函数,并在此函数返回后调用 pthread_exit()清理现常6.LinuxThreads的不足
由于Linux内核的限制以及实现难度等等原因,LinuxThreads并不是完全POSIX兼容的,在它的发行README中有说明。1)进程id问题
这个不足是最关键的不足,引起的原因牵涉到LinuxThreads的"一对一"模型。
Linux 内核并不支持真正意义上的线程,LinuxThreads是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程id,在进程调度、信号处理、IO等方面享有与普通进程一样的能力。在源码阅读者看来,就是Linux内核的clone()没有实现对 CLONE_PID参数的支持。
在内核do_fork()中对CLONE_PID的处理是这样的:
if (clone_flags & CLONE_PID) {
if (current->pid)
goto fork_out;
} - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
-
- Linux 线程实现机制分析 相关文章:
- ·无线攻防:破解WEP密钥过程全解
- ·ZXDSL 531B 无线ADSL路由器
- ·三国群雄传之卧龙与凤雏 支线任务 - 游戏攻略
- ·综合布线系统工程设计参考大全
- ·宽带共享该怎样设置无线路由器
- ·天龙八部 极恶路线攻略 - 游戏攻略
- ·无线网络攻防实战:WEP密钥如何被攻破的
- ·谁知道现在无线上网 费用怎么收
- ·自己制造无线网络增益天线
- ·28个免费在线电影网站
- Linux 线程实现机制分析 相关软件
- ·重返狼穴III:越南视线 Line of Sight: Vietnam 简体中文版
- ·赤色战线2
- ·微软正版认证离线安装包 build 2006.12.24 第二版
- ·QQ在线查看器 V1.8
- ·重返狼穴3:越南视线
- ·近距离作战3俄国前线
- ·马赫5无线上网加速 V5.0
- ·无线上网加速器 V2.3
- ·危机最前线2
- ·二战风云:前线指挥官
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:菜鸟手记:初次感受Linux
精品推荐
热点TOP10
- ·什么是MIS
- ·Vi命令一览表
- ·Linux操作系统介绍
- ·BIOS知识大全
- ·Linux学习手册
- ·Linux操作系统源代码详细分析
- ·VIA-威盛南桥集成AC97声卡驱动安装指南
- ·Linux From Scratch安装学习笔记
- ·RPM命令大全
- ·linux知识大全
- ·常见端口表汇总
- ·Linux 线程实现机制分析
- ·最新linux iso光盘下载点
- ·Linux发行版图标大全
- ·万能声卡驱动(Alsa)的安装方法
- ·LINUX 常见问题1000个详细解答
- ·Linux/Unix环境下的make命令详解
- ·仅仅查看IP地址
- ·JFFS2 文件系统及新特性介绍
- ·Linux管理工具介绍
特别推荐
- ·Linux企业安全管理中的应用
- ·Linux 线程实现机制分析
- ·Linux内核安全的入侵侦察系统
- ·Linux中QQ的配置
- ·Linux下的后门和常见日志工具
- ·BIOS知识大全
- ·如何编写Linux设备驱动程序
- ·Linux管理工具介绍
- ·Linux操作系统源代码详细分析
- ·Linux下用pptp连接VPN服务器
- ·在linux7.1上安装jdk+tomcat+oracle9i笔记
- ·Linux学习手册
- ·学习Linux的八点忠告
- ·深入分析Linux防火墙
- ·UNIX系统后门的安放和日志的擦除
- ·揭开Expect的神秘面纱
- ·万能声卡驱动(Alsa)的安装方法
- ·长篇连载--arm linux演艺---序
- ·为CanonPIXMAiP1000喷墨打印机安装驱动程序
- ·详细讲解Linux系统下ADSL拨号上网方法
