线程及其实现.ppt
《线程及其实现.ppt》由会员分享,可在线阅读,更多相关《线程及其实现.ppt(77页珍藏版)》请在三一办公上搜索。
1、2.4 线程及其实现,2.4.1 引入多线程技术的动机 2.4.2 多线程环境中的进程和线程 2.4.3 线程的实现 2.4.4 实例研究:Solaris的进程与线程 2.4.5实例研究:Windows2000/XP的进程与线程,2.4.1 引入多线程技术的动机,考察一个文件服务器的例子单线程(结构)进程(Single Threaded Process)多线程(结构)进程(Multiple Threaded process),单线程结构进程给并发程序设计效率带来问题,进程切换开销大进程通信代价大进程之间的并发性粒度较粗,并 发度不高不适合并行计算和分布并行计算 的要求不适合客户/服务器计算的要
2、求。,线程的概念(1),操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。,线程的概念(2),解决问题的基本思路:把进程的两项功能“独立分配资源”与“被调度分派执行”分离开来,进程作为系统资源分配和保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。,2.4.2 多线程环境中的进程与线程,单线程进程的内存布局和运行,管理和执行相分离的进程模型,多线程进程的内存布局,多线程环境中进程的
3、定义,进程是操作系统中进行保护和资源分配的基本单位。它具有:一个虚拟地址空间,用来容纳进程的映像;对处理器、其他(通信的)进程、文件和I/O资源等的存取保护机制。,多线程环境中的线程概念,线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。,线程主要组成,线程执行状态(运行、就绪、);当线程不运行时,有一个受保护的线程上下文,用于存储现场信息。所以,线程也可被看作是执行在进程内的一个独立的程序计数器;一个执行堆栈 一个容纳局部变量的主存存储区。,线程具有以下特性,并行性:共享性:动态
4、性:结构性:,线程的内存布局,线程又称轻量进程,线程运行在进程的上下文中,并使用进程的资源和环境。系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程,否则该进程无法被调度执行。,线程的状态(1),线程状态有:运行、就绪和阻塞,线程的状态转换也类似于进程。挂起状态对线程是没有意义的,如果进程挂起后被对换出主存,则它的所有线程因共享了进程的地址空间,也必须全部对换出去。,线程的状态(2),处于运行态的线程阻塞时,对某些线程实现机制,所在进程也转换为阻塞态,即使这个进程存在另一个处于就绪态的线程;对另一些线程实现机制,如果存在另外一个处于就绪态的线程,则调度该线程
5、处于运行状态,否则进程才转换为阻塞态。,线程管理和线程库(1),多线程技术利用线程包(库)提供线程原语集来支持多线程运行,有的操作系统直接支持多线程,而有的操作系统不支持多线程。线程包(库)可分成两种:用户空间中运行的线程包(库)和内核中运行的线程包(库)。,线程管理和线程库(2),线程包(库)提供一组API,支持应用程序创建、调度、撤销和管理线程的运行。基本线程控制原语:孵化(Spawn):又称创建线程。封锁(Block):又称阻塞线程。活化(Unblock):又称恢复线程。结束(Finish):又称撤销线程。,并发多线程程序设计的优点,快速线程切换。减少(系统)管理开销。(线程)通信易于实
6、现。(线程)通信易于实现。并行程度提高。节省内存空间。,多线程技术的应用(1),进程中线程多种组织方式:第一种是调度员工作者模式 第二种是组模式 第三种是流水线模式,多线程技术的应用(2),前台和后台工作。C/S应用模式。异步处理。加快执行速度。设计用户接口。,2.4.3 线程的实现,从实现的角度看,线程可以分成:用户级线程ULT(如Java,Informix)内核级线程KLT(如OS/2)。混合式线程(如,Solaris)。,各种线程实现方法,1.内核级线程(1),纯内核级线程设施中,线程管理的所有工作由操作系统内核做。内核专门提供KLT API,应用程序区不需要有线程管理代码。Window
7、s NT 和 OS/2都是采用这种方法的例子。,内核级线程(2),线程执行中可通过内核创建线程原语来创建其他线程,这个应用的所有线程均在一个进程中获得支持。内核要为整个进程及进程中的单个线程维护现场信息,应在内核中建立和维护PCB及TCB,内核的调度是在线程的基础上进行的。,内核级线程主要优点,多处理器上,内核能同时调度同一进程中多个线程并行执行。进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行。内核线程数据结构和堆栈很小,KLT切换快,内核自身也可用多线程技术实现,能提高系统的执行速度和效率。,内核级线程的主要缺点,应用程序线程在用户态运行,而线程调度和管理在内核实现,在
8、同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户态的模式切换,系统开销较大。,2.用户级线程,纯ULT设施中,线程管理工作由应用程序做,内核不知道线程的存在。任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行来实现多线程。线程库是一个ULT管理的例行程序包,实质上线程库是线程的运行支撑环境。,ULT线程“孵化”过程,进程开始只有一个线程,它可以孵化新线程,通过过程调用把控制权传送给“孵化”过程,由线程库为新线程创建一个TCB,并置为就绪态,按一定的调度算法把控制权传递给进程中处于就绪态的一个线程。当控制权传送到线程库时,当前线程的现场信息应被保存,而当线程库调度
9、一个线程执行时,要恢复它的现场信息。,线程调度和进程调度间的关系(1),假设进程B正在执行线程3,可能出现下列情况:进程B的线程3发出一个封锁B的系统调用(如I/O操作),通知内核进行I/O并将进程B置为等待状态,按照由线程库所维护的数据结构,进程B的线程3仍处在运行态。线程3并不实际地在一个处理器上运行,而是可理解为在线程库的运行态中。这时,进程B为等待态,线程3为线程库运行态。,线程调度和进程调度间的关系(2),一个时钟中断传送控制给内核,内核中止当前时间片用完的进程B,并把它放入就绪队列,切换到另一个就绪进程,此时,按由线程库维护的数据结构,进程B的线程3仍处于运行态。这时,进程B己处于
10、就绪态,但线程为线程库运行态。两种情况中,当内核切换控制权返回到进程B时,便恢复执行线程3。,ULT优点,线程切换不需要内核特权方式,按应用特定需要来调度,ULT能运行在任何OS上,,ULT的缺点,线程执行系统调用时,不仅该线程被阻塞,且进程内的所有线程会被阻塞。纯ULT中,多线程应用不能利用多重处理的优点。内核在一段时间里,分配一个进程仅占用一个CPU,进程中仅有一个线程能执行。,克服上述问题的方法,第一种方法是用多进程并发程序设计代替多线程并发程序设计,这种方法事实上放弃了多线程带来的所有优点。第二种方法是采用jacketing技术解决阻塞线程的问题。,3 混合式线程,混合系统中,内核支持
11、KLT多线程的建立、调度和管理,也提供线程库,允许应用程序建立、调度和管理ULT。应用程序的多个ULT映射成一些KLT,程序员可按应用需要和机器配置调整KLT数目,以达到较好效果。一个应用中的多个线程能同时在多处理器上并行运行,且阻塞一个线程时并不需要封锁整个进程。,2.4.4 实例研究:Solaris的进程与线程,Solaris中的进程与线程概念 进程(Process):用户级线程(User-Level Threads):轻量进程(Light Weight Process):内核级线程(Kernel-Level Threads):,Solaris的线程实现(1),用户层和核心层,用户层在用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线程 及其 实现

链接地址:https://www.31ppt.com/p-5760784.html