版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter4:Threads.Chapter4:ThreadsOverview概述MultithreadingModels多线程模型ThreadingIssues多线程问题PthreadsWindowsXPThreadsLinuxThreadsJavaThreadsThreads操作系统中引入进程的目的,是为了描述和实现多个程序的并发执行,以改善资源利用率以及提高系统吞吐量。那为什么还需要引入线程呢?线程的引入进程的两个基本属性:资源的拥有者给每个进程分配一虚拟地址空间,保存进程影像,控制一些资源(文件、I/O设备),有状态、优先级、调度调度单位进程是一个执行轨迹这两个属性构成了进程并发执行的基础线程的引入系统必须完成的操作:创建进程、撤销进程、进程切换当进程被创建时,系统要为它分配PCB表及其它必要的资源,如内存等;当进程被撤消时,系统要收回这些资源及PCB表等,因此系统必须付出一定的开销。当进程运行时,进程的切换现象更会大量存在,由于要保留当前执行进程的CPU现场和为选中执行的进程重布现场,更需较大的开销。缺点:时间空间开销大,限制并发程度的提高线程的引入线程的引入目的:减少进程切换和创建开销,提高执行效率和节省资源实现:将进程的资源申请和调度属性分开。即进程作为资源的申请和拥有者,但不作为调度的基本单位,这样,就产生了线程的概念。线程:是进程中的一个实体,是独立调度和分派的基本单位。SingleandMultithreadedProcesses
单线程进程以及多线程进程AthreadisabasicunitofCPUutilization;itconsistsof:线程是CPU运行的一个基本单元,包括programcounter程序计数器registerset寄存器集stackspace栈空间Athreadshareswithitspeerthreadsits:一个线程与它的对等线程共享:codesection代码段datasection数据段operating-systemresources操作系统资源collectivelyknowasatask.总体作为一个任务Atraditionalorheavyweightprocessisequaltoataskwithonethread传统的或重型进程等价于只有一个线程的任务ApplicationScenariosofMultithreading
多线程应用场景1.网页浏览器,可能分为多个线程,分别完成不同的功能一个线程接收文本另一个线程接收数据(图片、音频等)2.WordProcessor文本编辑器一个线程用于显示图形一个线程读入用户键盘输入第三个线程在后台进行拼写和语法检查ApplicationScenariosofMultithreading
多线程应用场景3.网页服务器是可能应用多线程机制最有效的情况要应对很多客户请求执行多个相似任务:每个客户请求的处理过程是非常相似的处理每一个客户请求的代码都是一致的,因此线程的代码可以共享Benefits好处Responsiveness响应度高ResourceSharing资源共享内存和资源共享代码共享(运行一个进程内多个线程执行一个相同的代码)
Economy经济进程创建比较耗费资源线程允许资源共享,在多个线程所需要的数据相似程度比较高的时候,可以充分利用这一优势
UtilizationofMPArchitectures多处理器体系结构的利用UserThreads用户线程Threadmanagementdonebyuser-levelthreadslibrary利用用户级的线程库进行管理线程库提供对线程的创建、调度和管理,无需用户干预内核不知道用户线程的存在缺点:如果内核是单线程的,那么任何一个用户级线程执行阻塞原语的时候就会引起整个进程阻塞,即使当时还有该进程内还有其他的线程可以被调度执行
Threeprimarythreadlibraries:
POSIXPthreadsWin32threadsJavathreadsKernelThreads内核线程SupportedbytheKernel内核支持操作系统内核负责其创建、调度和管理内核直接管理线程,因此当一个线程调用阻塞原语,进入阻塞态时,内核能调度当前进程内的其他线程执行在多处理器环境下,内核能够在多个处理器上调度不同的线程执行ExamplesWindowsXP/2000SolarisLinuxTru64UNIXMacOSXMultithreadingModels多线程模型Many-to-One
One-to-One
Many-to-ManyMany-to-OneManyuser-levelthreadsmappedtosinglekernelthread多个用户级线程映射到一个内核线程Examples:SolarisGreenThreadsGNUPortableThreads缺点:一旦线程阻塞,进程就阻塞Many-to-OneModelOne-to-OneEachuser-levelthreadmapstokernelthread每个用户级线程映射到一个内核线程ExamplesWindowsNT/XP/2000LinuxSolaris9andlater缺点:内核负担大,切换频繁One-to-oneModelOne-to-OneModelMany-to-ManyModelMany-to-ManyModelTwo-levelModel二级模型SimilartoM:M,exceptthatitallowsauserthreadtobeboundtokernelthread跟多对多类似,也允许一个用户线程绑定到一个内核线程上ExamplesIRIXHP-UXTru64UNIXSolaris8andearlierTwo-levelModelThreadingIssues多线程问题Semanticsoffork()andexec()systemcallsThreadcancellationSignalhandlingThreadpoolsThreadspecificdataScheduleractivationsSemanticsoffork()andexec()Doesfork()duplicateonlythecallingthreadorallthreads?如果程序中的一个线程调用fork(),新进程会复制所有线程,还是单个线程?ThreadCancellation线程取消Terminatingathreadbeforeithasfinished在线程结束前终止线程的任务Twogeneralapproaches:两种方法Asynchronouscancellationterminatesthetargetthreadimmediately异步取消:立即终止目标线程Deferredcancellationallowsthetargetthreadtoperiodicallycheckifitshouldbecancelled延迟取消:允许目标线程不断地检查它是否应终止,允许目标线程有机会以有序的方式终止自己SignalHandling信号处理SignalsareusedinUNIXsystemstonotifyaprocessthataparticulareventhasoccurred信号在UNIX系统中用来通知进程某个特定的事件发生了AsignalhandlerisusedtoprocesssignalsSignalisgeneratedbyparticularevent信号是由特定事件的发生所产生的Signalisdeliveredtoaprocess产生的信号要发送到进程Signalishandled信号必须加以处理Options:Deliverthesignaltothethreadtowhichthesignalapplies发送信号到信号所应用的线程Deliverthesignaltoeverythreadintheprocess发送到进程的每一个线程Deliverthesignaltocertainthreadsintheprocess发送到进程内的某些固定线程Assignaspecificthreadtoreceiveallsignalsfortheprocess规定一个特定线程以接收进程的所有信号ThreadPools线程池Createanumberofthreadsinapoolwheretheyawaitwork创建一定数量的线程,放到池中等待工作Advantages:Usuallyslightlyfastertoservicearequestwithanexistingthreadthancreateanewthread通常用现有线程处理请求比等待创建新的线程要快Allowsthenumberofthreadsintheapplication(s)tobeboundtothesizeofthepool限制了在任何时候可用线程的数量ThreadSpecificData线程特定数据Allowseachthreadtohaveitsowncopyofdata允许每一个线程有自己的数据副本Usefulwhenyoudonothavecontroloverthethreadcreationprocess(i.e.,whenusingathreadpool)SchedulerActivations调度程序激活BothM:MandTwo-levelmodelsrequirecommunicationtomaintaintheappropriatenumberofkernelthreadsallocatedtotheapplication多对多和二级模型都需要通过通信维持一个合适的内核线程的数量以保证最好的性能Scheduleractivationsprovideupcalls-acommunicationmechanismfromthekerneltothethreadlibraryThiscommunicationallowsanapplicationtomaintainthecorrectnumberkernelthreadsPthreadsAPOSIXstandard(IEEE1003.1c)APIforthreadcreationandsynchronizationAPIspecifiesbehaviorofthethreadlibrary,implementationisuptodevelopmentofthelibraryCommoninUNIXoperatingsystems(Solaris,Linux,MacOSX)WindowsXPThreadsImplementstheone-to-onemappingEachthreadcontainsAthreadidRegistersetSeparateuserandkernelstacksPrivatedatastorageareaTheregisterset,stacks,andprivatestorageareaareknownasthecontextofthethreadsTheprimarydatastructuresofathreadinclude:ETHREAD(executivethreadblock)KTHREAD(kernelthreadblock)TEB(threadenvironmentblock)LinuxThreadsLinuxreferstothemastasksratherthanthreadsThreadcreationisdo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耐火材料模具工岗前实操综合知识考核试卷含答案
- 瓦斯抽放工岗前技能评估考核试卷含答案
- 钙镁磷肥生产工操作规程考核试卷含答案
- 大地测量员班组管理强化考核试卷含答案
- 重碱煅烧工安全防护考核试卷含答案
- 互感器装配工班组协作强化考核试卷含答案
- 库欣综合征患者的药物治疗护理
- 护理人文关怀的实践与意义
- 莱州湾生态系统健康诊断与预警体系构建及对策研究
- 荧光碳点探针:食盐及腌制品中亚铁氰化钾快速检测的创新路径
- 湖北恩施州宣恩县展宏粮食储备有限公司招聘笔试题库2026
- 2026中国铁塔夏季校园招聘备考题库附答案详解(轻巧夺冠)
- 2025年软考《数据库系统工程师》考试试题及答案
- 服装系毕业设计
- 2026四川自贡高新国有资本投资运营集团有限公司招聘9人备考题库含答案详解(综合卷)
- 2026年银行金融基础知识复习通关试题库带答案详解(完整版)
- 2025年深圳市龙岗区网格员招聘考试试题及答案解析
- 五年级下册道德与法治材料分析专项练习题
- 2026年及未来5年市场数据中国代可可脂行业市场竞争格局及投资前景展望报告
- 2026年4月18日甘肃省直遴选笔试真题及解析(上午卷)
- 比亚迪供应商质量管理手册
评论
0/150
提交评论