第二课进程管理(00002).ppt

  1. 1、本文档共175页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内核支持线程 KST(Kernel Supported Threads) 内核支持线程在内核的支持下运行,内核在其空间内进行线程(包括用户进程/系统进程中的线程)的创建、调度和管理。 由于内核管理线程,当一个线程执行阻塞系统调用时,内核能调度应用程序内的另一个线程以便执行。而且,在多处理器环境下,内核能在不同处理器上调度线程。 缺点:涉及到用户态和内核态之间的切换,开销大 用户级线程 用户线程在内核之上支持,并在用户层通过线程库来实现。线程库提供对线程的创建、调度和管理的支持而无须内核支持。由于内核并不知道用户级的线程,所以所有线程的创建和调度都是在用户空间内进行的,而无须内核的干预。 优点:线程管理开销小、调度算法可独立于OS、实现上的平台无关性 线程管理代码是用户程序的一部分,可在不支持线程的平台上实现 缺点: 在基于进程机制的OS中,多数系统调用会引起进程阻塞,当一个用户级线程执行系统调用被阻塞,其所在的整个进程会被阻塞,即使还有其他线程可以在应用程序内运行。 不能利用多处理机的并行性,内核每次只为一个进程分配一个CPU. 内核支持线程(KST) 用户级线程(ULT) 利用系统调用 直接 间接 对线程的操作 依靠内核 与内核无关 线程控制块 在内核空间 在用户空间 线程切换开销 大,需用户态/核态切换 小,无模式切换 多处理器支持 好,一个进程的多个线程可在多个CPU上并行执行 差,一个进程只能分配到一个CPU OS调度单位 线程 一个线程阻塞,进程中其他线程还可以执行 进程 一个线程的阻塞会引起整个进程的阻塞 线程调度 OS按照一定的策略调度 线程的调度通常发生在一个进程内部,进程可以按需选择合适的策略,与OS无关 平台无关性 × √ 比较KST与ULT ULT/KST组合方式 将两种方式进行组合 内核支持多KST线程的建立、调度和管理 也允许用户应用程序建立、调度和管理ULT 结合了ULT和KST的优点 既能充分支持多处理机系统 又能利用用户级线程的优点,达到较好性能 2.6.4 线程的实现 内核支持线程的实现 用户级线程的实现 用户级线程与内核级控制线程的连接 内核支持线程的实现 多线程OS在创建进程时,为其分配一个任务数据区PTDA, 其中包含若干线程控制块TCB 每当进程创建一个线程,为其分配一个TCB,并分配必要资源 撤销一个线程时,也要回收资源和TCB 内核支持线程的创建、撤销、调度和切换与进程的十分相似,但比进程上的操作开销小。 用户级线程的实现 用户级线程的实现需借助于中间系统,中间系统有两种实现方式: 运行时系统(Runtime System) 内核控制线程 运行时系统 “运行时系统”,实质上是用于管理和控制线程的函数(过程)集合。其中包括: 创建、撤销线程的函数 线程同步、通信、调度的函数 运行时这些函数驻留在用户空间,作为用户级线程与内核之间的接口,从而实现了用户级线程与内核的无关性。 线程切换时不需要转入核心态,而是由运行时系统中的线程切换过程来执行切换任务,该过程将线程的CPU状态保存在该线程的堆栈中,然后按照一定算法选择一个就绪线程执行。 切换无需进入内核,且操作简单,速度非常快。 内核控制线程 内核控制线程又称为轻型进程LWP(Light Weight Process)。 LWP可通过系统调用获得内核提供的服务。 用户级线程运行时,只要连接到一个LWP,就具有了内核支持线程的所有属性,属于组合方式。 LWP数量有限,一个LWP可被多个用户级线程复用,但只有当前连接的线程才能与内核通信,其余阻塞,或等待LWP。 用户级线程通过LWP访问内核,但内核看到的总是LWP,看不到用户线程,从而实现了内核与用户级线程之间的隔离,实现了两者的无关性。 用户级线程与内核级控制线程的连接 三种连接模型 一对一模型 多对一模型 多对多模型 一对一模型 为每个用户线程设置一个内核控制线程与之连接。一个线程阻塞时,允许调度另一个线程执行。并行能力强,支持多处理机系统。 缺点:每创建一个用户线程就需要创建一个相应的内核线程,开销较大。 创建内核线程的开销会影响应用程序的性能,因此需要限制系统中的线程数量。 Windows NT/2000/xp和OS/2实现了一对一模型。 多对一模型 多对一模型将多个用户级线程映射到一个内核控制线程。 这些用户线程一般属于一个进程,运行在该进程的用户空间,线程的调度和管理在用户空间完成。用户线程需要访问内核时,才映射到一个内核控制线程上,但每次只允许映射一个线程。 优点:线程管理开销小,效率高。 缺点:当一个线程访问内核时阻塞,整个进程都会被阻塞。也不能支持一个进程的多个线程在多处理器上并行运行。 在这种模型中,处理机调度的单位仍然是进程。 Solaris 2所提供的线程库就是

文档评论(0)

xina171127 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档