




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.4 线程及其实现教学内容: 2.4 线程及其实现2.4.1 引入多线程技术的动机2.4.2 多线程环境中的进程与线程2.4.3 线程的实现教学时数:2学时教学进程:2.4 线程及其实现2.4.1 引入多线程技术的动机1. 单线程结构进程(single threaded process)在传统的操作系统中,进程是系统进行资源分配的单位,按进程为单位分给存放其映像所需要的虚拟地址空间、执行所需要的主存空间、完成任务需要的其它各类外围设备资源和文件。同时,进程也是处理器调度的单位,进程在任一时刻只有一个执行控制流,通常将这种结构的进程成为单线程(结构)进程(single threaded process)2. 一个文件服务器的例子当它接受一个文件服务请求后,由于等待磁盘传输而经常被阻塞。假如不阻塞可继续接受新的文件服务请求并进行处理,则文件服务器的性能和效率便可以提高,由于处理这些请求时要共享一个磁盘缓冲区,程序和数据要在同一个地址空间中操作。这一类应用非常多,对于上述这类基于同数据区的同时多请求应用,用单线程结构的进程难以达到这一目标,即使能解决问题的代价也非常高,需要寻求新概念、提出新机制。3. 新的问题进程切换开销大进程通信代价大进程之间的并发性粒度较粗,并 发度不高不适合并行计算和分布并行计算 的要求不适合客户/服务器计算的要求。4. 多线程结构进程(multiple threaded process)上面的问题,迫切的要求操作系统改进进程结构,提供新的机制。使得应用能够按照需求在同一进程中设计出多条控制流;多控制流之间可以并行执行;多控制流切换不需要通过进程调度;多控制流之间还可以通过内存区直接通信,降低通信开销。这就是近年来流行的多线程(结构)进程(multiple threaded process)5. 引入线程概念的目的操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。6. 解决问题的基本思路把进程的两项功能“独立分配资源”与“被调度分派执行”分离开来,进程作为系统资源分配和保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。7. 线程概念的其它意义事实上,线程概念不仅局限于操作系统中,在程序设计语言、数据库管理和其他一些应用软件中,也通过引入线程来改善系统和应用程序的性能,可以相信多线程技术在程序设计中将会被越来越广泛地采用2.4.2 多线程环境中的进程与线程1. 多线程环境中的进程概念单线程进程的内存布局在传统的操作系统的单线程进程中,进程和线程概念可以不加区别。该图给出了单线程进程的内存布局,它由进程控制块和用户地址空间,以及管理进程执行的调用/返回行为的系统堆栈或用户堆栈构成。一个进程的结构可以划分为两个部分:对资源的管理和实际的指令执行序列。显然,采用并发多进程程序设计时,并发进程之间的切换和通信均要借助于操作系统的进程管理和进程通讯机制,因而是现代价较大,而较大的进程切换和进程通信代价,又进一步影响了并发的粒度。管理和执行相分离的进程如图所示,让进程是操作系统中进行保护和资源分配的单位,允许一个进程中包含多个可并发执行的控制流。这些控制流切换时不必通过进程调度,通信时可以直接借助于共享内存区。每个控制流称为一个线程,这就是并发多线程程序设计。多线程进程的内存布局在多线程环境中,仍然有与进程相关的内容是PCB和用户地址空间。而每个线程除了有独立堆栈,以及包含现场信息和其他状态信息外,也要设置线程控制块(Thread Control Block,TCB)。线程间的关系较为密切,一个进程中的所有进程共享其所属进程拥有的资源,它们驻留在相同的地址空间,可以存取相同的数据。例如,当一个线程改变了主存中的一个数据项时,如果这时其他线程也存取这个数据项,它便能看到相同的结果。多线程环境中进程的定义进程是操作系统中进行保护和资源分配的基本单位。它具有: 一个虚拟地址空间,用来容纳进程的映像; 对处理器、其他(通信的)进程、文件和I/O资源等的存取保护机制。2. 多线程环境中的线程概念线程概念线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。线程的组成线程执行状态(运行、就绪、);当线程不运行时,有一个受保护的线程上下文, 用于存储现场信息。所以,线程也可被看作是执行在进程内的一个独立的程序计数器;一个执行堆栈一个容纳局部变量的主存存储区。线程的主要特性并行性:共享性:动态性:结构性: 线程的内存布局进程可以划分为两个部分:资源集合和线程集合。进程要支撑线程运行,为线程提供地址空间和各种资源,它封装了管理信息,包括对指令代码、全局数据和I/O状态数据等共享部分的管理。线程封装了执行信息,包括对cpu寄存器、执行栈(用户栈、内核栈)和局部变量、过程调用参数、返回值等线程私有部分的管理。由于线程具有许多传统进程所具有的特征,所以也把线程称为轻量进程(Light-Weight Process,LWP)3. 线程的状态线程状态有:运行、就绪和阻塞,线程的状态转换也类似于进程。挂起状态对线程是没有意义的,如果进程挂起后被对换出主存,则它的所有线程因共享了进程的地址空间,也必须全部对换出去。和进程类似,线程也有生命周期,因而也存在各种状态。从调度需要来说,线程的关键状态有:运行、就绪和等待。另外,线程的状态转换也类似于进程。当然也有一些细微之处需要仔细斟酌。如,由于线程不是资源的拥有者,挂起状态对线程来说就是没有意义的。再如,一个进程中可能有多个线程,当处于运行态的线程执行中要求系统服务(如执行一个I/O请求)而成为等待状态时,是不是要阻塞整个进程,也要好好考虑考虑。该线程的状态是运行阻塞了,那么进程的状态呢,运行?课本中两种可行的考虑处于运行态的线程阻塞时,对某些线程实现机制,所在进程也转换为阻塞态,即使这个进程存在另一个处于就绪态的线程;对另一些线程实现机制,如果存在另外一个处于就绪态的线程,则调度该线程处于运行状态,否则进程才转换为阻塞态。显然前一种做法欠妥,丢失了多线程机制的优越性,降低了系统的灵活性。4. 线程管理和线程库线程包多线程技术利用线程包(库)提供线程原语集来支持多线程运行,有的操作系统直接支持多线程,而有的操作系统不支持多线程。线程包(库)可分成两种:用户空间中运行的线程包(库)和内核中运行的线程包(库)。基本的线程控制原语线程包(库)提供一组API,支持应用程序创建、调度、撤销和管理线程的运行。基本线程控制原语:孵化(Spawn):又称创建线程。 封锁(Block):又称阻塞线程。 活化(Unblock):又称恢复线程。结束(Finish):又称撤销线程。对于在用户空间运行的线程库,由于它完全在用户空间中运行,内核不知道线程库的存在,而仅仅认为它管理的是一般的单线程进程。这种情况下,线程库起到一个类微内核的作用,实质上成了多线程应用程序的开发和运行支撑环境。其优点是:节省了内核的宝贵资源,减少内核态和用户态之间的切换。因而,线程库的运行开销小效率高,容易按应用特定需要选择进程调度算法。也就是说,线程库的线程调度算法与操作系统的低级调度算法是无关的,能运行在任何操作系统上。缺点是:当线程执行一个系统调用时,不仅该线程被阻塞,而且金城内的所有线程会被阻塞,这种多线程应用就不能充分利用多处理器的优点。在内核中运行的线程库,则是通过内核来管理线程库的。内核中不但要保存进程的数据结构,也要建立和维护线程的数据结构及保存每个线程的入口,线程管理的所有工作由操作系统内核来实现。由内核专门提供一组应用程序编程接口(API),供开发者开发多线程应用程序。其优点是:能够调度统一进程中多个线程同时在处理器上并行执行,充分发挥多处理器的能力,若进程中的一个线程被阻塞了,内核能调度同一进程的其他线程占有处理器运行,也可以调度其他进程中的线程占有处理器运行,也可以调度其他进程中的线程运行。缺点是:在同一进程中,控制权从一个线程传送到另一个线程时需要用户态内核态用户态的模式切花,系统开销大。基于上述两种线程库可把线程的实现分为三类:用户级线程(User Level Thread,ULT),Java的线程库内核级线程(Kernel Level Thread,KLT),Win2k/Xp,os/2混合式线程,同时支持ULT和KLT两种线程的实现,Solaris 近年来,已出现了具有支持多线程运行的微处理器体系结构,称为超线程技术。其微处理器包含两个逻辑上独立的微处理器,能够同时执行两个独立的线程代码流。每个均可被单独启停、中断和被调度执行特定的线程,而不会影响芯片上另一个逻辑上独立的处理器共享微处理器内核的执行资源,包括引擎、高速cache、总线接口和固件等。5. 并发多线程程序设计的优点 快速线程切换。 减少(系统)管理开销。 (线程)通信易于实现。 (线程)通信易于实现。 并行程度提高。 节省内存空间。在一个进程中包含多个并行执行的控制流,而不是把多个可并发执行的控制流以一份善在多个进程中,这是并发多线程程序设计与并发多进程程序设计的不同之处。并发多线程程序设计的主要是使系统性能获得很大提高,具体表现在:6. 线程组织和多线程技术的应用一个进程中可以包含多个线程,每个线程拥有自己的程序计数器和堆栈,用来跟踪程序运行的轨迹,这些线程分享了进程的处理器时间配额。在单处理器系统中,一个线程先执行,接着同一进程或其他进程中的另一个线程执行,这很像分时系统的做法。在多处理器系统中,同一进程或不同进程中的多个线程真正并行执行。一个进程中的所有线程都在同一个地址空间中,共享全局变量和各种资源,如打开文件、定时器、信号量、内存区。进程中线程的组织方法 第一种是调度员工作者模式 第二种是组模式 第三种是流水线模式 多线程技术在现代计算机软件中得到了广泛的应用,取得了较好的效果(举例略)。前台和后台工作。C/S应用模式。异步处理。 加快执行速度。设计用户接口。2.4.3 线程的实现从实现的角度看,线程可以分成:用户级线程ULT(如Java ,Informix)内核级线程KLT(如OS/2)。混合式线程(如,Solaris)。1. 内核级线程特点任何应用程序都可以被程序设计成多个线程,当提交给操作系统执行时,内核为它创建一个进程和一个线程,线程在执行中可以通过内核创建线程原语来创建其他线程,这个应用的所有线程均在一个进程中获得支持。内核要为整个进程及进程中的单个线程维护现场信息,所以,应在内核空间中建立和维护进程控制块PCB和线程控制块TCB,内核的调度是在线程的基础上进行的。纯内核级线程设施中,线程管理的所有工作由操作系统内核做。内核专门提供KLT API,应用程序区不需要有线程管理代码。Windows NT 和 OS/2都是采用这种方法的例子。线程执行中可通过内核创建线程原语来创建其他线程,这个应用的所有线程均在一个进程中获得支持。内核要为整个进程及进程中的单个线程维护现场信息,应在内核中建立和维护PCB及TCB,内核的调度是在线程的基础上进行的。优点多处理器上,内核能同时调度同一进程中多个线程并行执行。进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行。内核线程数据结构和堆栈很小,KLT切换快,内核自身也可用多线程技术实现,能提高系统的执行速度和效率。缺点应用程序线程在用户态运行,而线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户态的模式切换,系统开销较大。2. 用户级线程特点纯ULT设施中,线程管理工作由应用程序做,内核不知道线程的存在。任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行来实现多线程。线程库是一个ULT管理的例行程序包,实质上线程库是线程的运行支撑环境。线程的”孵化”过程进程开始只有一个线程,它可以孵化新线程,通过过程调用把控制权传送给“孵化”过程,由线程库为新线程创建一个TCB,并置为就绪态,按一定的调度算法把控制权传递给进程中处于就绪态的一个线程。当控制权传送到线程库时,当前线程的现场信息应被保存,而当线程库调度一个线程执行时,要恢复它的现场信息。线程调度和进程调度的关系假设进程B正在执行线程3,可能出现下列情况: 进程B的线程3发出一个封锁B的系统调用(如I/O操作),通知内核进行I/O并将进程B置为等待状态,按照由线程库所维护的数据结构,进程B的线程3仍处在运行态。线程3并不实际地在一个处理器上运行,而是可理解为在线程库的运行态中。这时,进程B为等待态,线程3为线程库运行态。一个时钟中断传送控制给内核,内核中止当前时间片用完的进程B,并把它放入就绪队列,切换到另一个就绪进程,此时,按由线程库维护的数据结构,进程B的线程3仍处于运行态。这时,进程B己处于就绪态,但线程为线程库运行态。两种情况中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025下半年电新行业供给回归有序需求韧性较好静待周期复苏
- 直播电商主播在2025年的粉丝互动与营销策略研究报告
- 老年教育课程设置改革与2025年体验式教学方法应用分析报告
- 2025年农村一二三产业融合发展的农村电商与农业品牌建设报告
- 2025年文化旅游演艺项目季节性运营与市场策略报告
- 2025年成人教育终身学习平台运营中的品牌建设与市场推广报告
- 汽车轻量化材料在汽车底盘减重中的技术创新报告
- 汽车行业2025年供应链风险管理与企业风险管理策略优化方案报告
- 汽车共享平台2025年运营模式转型与用户行为重构报告
- 2025年远程医疗服务在分级诊疗中的远程医疗技术与设备研发与创新报告
- 初三自主招生简历范文自荐信
- 电梯维修报价表格
- 矿区专项边坡治理方案设计
- 国产上海7120手表机芯
- 4配电柜安全风险点告知牌
- 《卖炭翁》中考阅读经典赏析试题(共27题)
- 养老服务礼仪与实务全书ppt完整版课件最全电子教案正本书教学教程
- Q∕GDW 11445-2015 国家电网公司管理信息系统安全基线要求
- 材料科学基础 第2章 晶体结构
- 股静脉采血学习教案
- TOM全面品质管理PPT课件
评论
0/150
提交评论