1 / 18
文档名称:

Linux线程实现机制分析.docx

格式:docx   大小:137KB   页数:18页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux线程实现机制分析.docx

上传人:小博士 2019/6/27 文件大小:137 KB

下载得到文件列表

Linux线程实现机制分析.docx

相关文档

文档介绍

文档介绍:Linux线程实现机制分析口从多线程编程的概念出现在Linux中以来,Linux多线应用的发展总是少两个问题脱不开干系:兼容性、效率。本文从线程模型入手,通过分析目前Linux平台上最流行的LinuxThrcads线程库的实现及其不足,描述了Linux社区是如何看待和解决兼容性和效率这两个问题的。:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的hl的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥冇多个线程,此时,如果进程运行在SMP机器上,它就可以同时使用多个cpu来执行各个线程,达到最大程度的并行,以提高效率;同时,即使是在单cpu的机器上,采用多线程模型来设计程序,止如当年采用多进程模型代替单进程模型一样,使设计更简洁、功能更完备,程序的执行效率也更高,例如采用多个线程响应多个输入,而此时多线程模型所实现的功能实际上也可以用多进程模型來实现,而与后者相比,线程的上下文切换开销就比进程要小多了,从语义上来说,同吋响应多个输入这样的功能,实际上就是共享了除cpu以外的所有资源的。针对线程模型的两大意义,分别开发出了核心级线程和用户级线程两种线程模型,分类的标准主要是线程的调度者在核内还是在核外。前者更利于并发使用多处理器的资源,而后者则更多考虑的是上下文切换开销。在目前的商用系统屮,通常都将两者结合起来使用,既提供核心线程以满足smp系统的需耍,也支持用线程库的方式在用户态实现另一套线程机制,此时一个核心线程同时成为多个用户态线程的调度者。.正如很多技术一样,〃混合〃通常都能带来更高的效率,但同时也带来更大的实现难度,出于〃简单〃的设计思、路,Linux从一开始就没有实现混合模型的计划,但它在实现上采用了另一•种思路的〃混合〃。在线程机制的具体实现上,可以在操作系统内核上实现线程,也可以在核外实现,后者显然要求核内至少实现了进程,而前者则一般要求在核内同时也支持进程。核心级线程模型显然耍求前者的支持,|佃用户级线程模型则不一定基于后者实现。这种差杲,正如前所述,是两种分类方式的标准不同带來的。当核内既支持进程也支持线程时,就可以实现线程-进程的〃多对多〃模型,即一个进程的某个线程由核内调度,而同吋它也可以作为用户级线程池的调度者,选择合适的用户级线程在其空间屮运行。这就是前面提到的〃混合〃线程模型,既可满足多处理机系统的需耍,也可以最大限度的减小调度开销。绝大多数商业操作系统()。在核外实现的线程乂可以分为〃一对一〃、”多对一〃两种模型,前者用一个核心进程(也许是轻量进程)对应一个线程,将线程调度等同于进程调度,交给核心完成,而后者则完全在核外实现多线程,调度也在用户态完成。后者就是前面提到的单纯的用户级线程模型的实现方式,显然,这种核外的线程调度器实际上只需要完成线程运行栈的切换,调度开销非常小,但同时因为核心信号(无论是同步的还是异步的)都是以进程为单位的,因而无法定位到线程,所以这种实现方式不能川于多处理器系统,而这个需求正变得越来越人,因此,在现实屮,纯用户级线程的实现,除算法硏究F1的以外,几乎已经消失了。Linux内核只提供了轻量进程的支持,限制了更高效的线程模型的实现,但Linux着重优化了进程的调度开销,一定程度上也弥补了这一缺陷。目前最流行的线程机制LinuxThreads所采用的就是线程-进程〃一对一〃模型,调度交给核心,而在用户级实现一个包括信号处理在内的线程管理机制。Linux-LinuxThreads的运行机制正是本文的描述重点。、资源及其执行三部分,其小程序通常指代码,资源在操作系统层面上通常包括内存资源、10资源、信号处理等部分,而程序的执行通常理解为执行上下文,包括对cpu的占用,后来发展为线程。在线程概念出现以加,为了减小进程切换的开销,操作系统设计者逐渐修正进程的概念,逐渐允许将进程所占冇的资源从其主体剥离出來,允许某些进程共享一•部分资源,例如文件、信号,数据内存,甚至代码,这就发展出轻量进程的概念。,应用程序可以通过一个统—•的clone()系统调用接口,用不同的参数指定创建轻最进程还是普通进程。在内核屮,clone0调用经过参数传递和解释后会调用do_fork(),这个核内函数同时也是fork0、vfor

最近更新

2024年春运实习报告范文 8页

2024年春节记叙文作文400字集合五篇 6页

2024年春节的话题的作文 20页

2024年春节有趣的作文三篇 3页

集团客户综合运营平台(ESOP)项目风险预警管理.. 2页

2024年春节安全的倡议书 22页

随动慢牵治疗仪的控制与信息管理系统开题报告.. 2页

2024年春学期音乐教学的工作计划 11页

防屈曲耗能支撑及在高层钢框架结构中的应用研.. 2页

2024年昆虫记读后感(优) 3页

长沙市消费者购房决策行为研究的开题报告 2页

2024年早读没读书检讨书 14页

长株潭地区大气沉降中重金属污染特征及来源分.. 2页

2024年早上好的幽默句子 32页

锦州方言语音对英语语音习得的影响的开题报告.. 2页

信息科技管理的绩效评估与改进 22页

锂离子电池富锂层状正极材料的制备及其电化学.. 2页

2024年施工承包合同[实用15篇] 61页

铈基氧化物纳米结构的合成、表征及其催化性能.. 2页

钨铼混合基阴极材料的研究的开题报告 2页

钠离子电池铁基及锰基硅酸盐正极材料研究的开.. 2页

2024年新生辅导员工作计划(通用22篇) 72页

金表面巯基化合物自组膜的制备与表征的开题报.. 2页

2024年新版幼小衔接观后感(精选16篇) 44页

妇产科市级重点专科汇报 26页

国际公法案例分析:诺特鲍姆案 2页

医师多机构备案申请表【范本模板】 3页

飞夺泸定桥PPT完美版 27页

机载临时支护安全技术方法措施模板 9页

再生资源回收有限公司企业管理制度汇编 62页