操作系统概念ch4-quan课件_第1页
操作系统概念ch4-quan课件_第2页
操作系统概念ch4-quan课件_第3页
操作系统概念ch4-quan课件_第4页
操作系统概念ch4-quan课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论