Linux 线程实现机制分析
日期:2008年2月24日 作者: 查看:[大字体 中字体 小字体]-
在do_fork()中,不同的clone_flags将导致不同的行为,对于LinuxThreads,它使用(CLONE_VM CLONE_FS CLONE_FILES CLONE_SIGHAND)参数来调用clone()创建"线程",表示共享内存、共享文件系统访问计数、共享文件描述符表,以及共享信号处理方式。本节就针对这几个参数,看看Linux内核是如何实现这些资源的共享的。
1.CLONE_VM
do_fork ()需要调用copy_mm()来设置task_struct中的mm和active_mm项,这两个mm_struct数据与进程所关联的内存空间相对应。如果do_fork()时指定了CLONE_VM开关,copy_mm()将把新的task_struct中的mm和active_mm设置成与 current的相同,同时提高该mm_struct的使用者数目(mm_struct::mm_users)。也就是说,轻量级进程与父进程共享内存地址空间,由下图示意可以看出mm_struct在进程中的地位:
2.CLONE_FS
task_struct 中利用fs(struct fs_struct *)记录了进程所在文件系统的根目录和当前目录信息,do_fork()时调用copy_fs()复制了这个结构;而对于轻量级进程则仅增加fs- >count计数,与父进程共享相同的fs_struct。也就是说,轻量级进程没有独立的文件系统相关的信息,进程中任何一个线程改变当前目录、根目录等信息都将直接影响到其他线程。3.CLONE_FILES
一个进程可能打开了一些文件,在进程结构task_struct中利用files(struct files_struct *)来保存进程打开的文件结构(struct file)信息,do_fork()中调用了copy_files()来处理这个进程属性;轻量级进程与父进程是共享该结构的,copy_files() 时仅增加files->count计数。这一共享使得任何线程都能访问进程所维护的打开文件,对它们的操作会直接反映到进程中的其他线程。4.CLONE_SIGHAND
每一个Linux进程都可以自行定义对信号的处理方式,在task_struct中的sig(struct signal_struct)中使用一个struct k_sigaction结构的数组来保存这个配置信息,do_fork()中的copy_sighand()负责复制该信息;轻量级进程不进行复制,而仅仅增加signal_struct::count计数,与父进程共享该结构。也就是说,子进程与父进程的信号处理方式完全相同,而且可以相互更改。 - 上一页 [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拨号上网方法
