ch.线程及其实现).ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch.线程及其实现).ppt

2.用户级线程(User Level Thread) 由应用程序完成所有线程的管理 用户空间中的线程库提供一个线程运行管理系统(运行系统) 线程库(用户空间):一组管理线程的函数 内核不知道线程的存在 线程切换不需要核心态特权 调度是应用特定的 2.4.3 线程的实现 线程运行管理系统: 创建、撤消线程 在线程之间传递消息和数据 调度线程执行 保护和恢复线程上下文 优点: 线程切换不调用内核 调度是应用程序特定的:可以选择最好的算法 ULT可运行在任何操作系统上(只需要线程库),可以在一个不支持线程的OS上实现 2.4.3 线程的实现 缺点: 大多数系统调用是阻塞的,因此内核阻塞进程,故进程中所有线程将被阻塞 内核只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上 2.4.3 线程的实现 两种线程实现方式示意 线程库 用户级线程 用户空间 P 内核空间 内核级线程 ULT KLT P 用户空间 内核空间 Process P 2.4.3 线程的实现 3.混合式线程 Solaris是sun公司1992推出的32位多任务多线程os,他支持多处理机,多线程和窗口用户界面。具有大量实用软件。 在Solaris中存在四中实体: 1.进程: 用户地址空间 用户栈 进程控制块 2.4.3 线程的实现 2.用户级线程(线程库): 可在应用进程中建立多个ULT 每个ULT需要:栈、程序计数器 不受调度程序的调度,线程切换快 对操作系统不可见 2.4.3 线程的实现 3.核心级线程: 设置了大量KLT 有一个小的数据结构和栈 完成内核的所有工作 处理器调度的单位 2.4.3 线程的实现 4.轻型进程(LWP): 每个ULT利用LWP与内核通信 每个LWP支持一个或多个用户级线程,并映射到一个核心级线程 每个LWP对应用程序可见,内核看到的是多个LWP而看不到ULT 2.4.3 线程的实现 混合型线程实例——窗口系统: 用一组用户级线程来表示多个窗口 用一个内核级线程来支持这一组用户级线程 优点: 设计得当,将可结合前两者的优点,并避开其缺点 缺点: 设计不当,将产生更差的效果 2.4.3 线程的实现 * * * 进程内部可以再进一步分为线程(Thread) * * * * 定义:线程是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度的基本单位 * 因为同一进程内的线程共享内存和文件,因此它们之间相互通信无须调用内核 * [sэla:ris] LOGO 第二章 处理器管理 进程的缺陷 – 只能在一个时间干一件事情,如果想同时干两 件或多件事情,进程就不够用了 – 进程在执行过程中如有阻塞,整个进程就会阻 塞 – 即使进程里面有部分工作不依赖与输入数据, 也无法推进 ? 因此, – 进程的亲戚“线程”引入成为必然 2.4 线程及其实现 2.4.1 引入多线程的动机 2.4.2 多线程环境中的进程和线程 2.4.3 线程的实现 2.4.1 引入多线程的动机 进程内部可以再进一步分为线程(Thread) 单线程(结构)进程(Single Threaded Process) 多线程(结构)进程(Multiple Threaded process) 线程的引入 引入进程的目的 是为了使多个程序并发执行,以改善资源利用率、提高系统吞吐量。 进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。 线程的引入 1.进程是一个可拥有资源的基本单位。 2.进程同时又是一个可独立调度和分派的基本单位。 但是:进程作为一个资源拥有者,在创建、撤消、切换中,系统必须为之付出较大时空开销。所以系统中进程的数量不宜过多,进程切换的频率不宜过高,但这也就限制了并发程度的进一步提高。 线程的引入 ?进程切换开销大; ?进程通信代价大; ?进程间的并发性粒度较粗,并发度不高; ?不适合并行计算和分布并行计算的要求; ?不适合客户/服务器计算的要求。 单线程结构进程给并发程序设计效率带来问题 引入线程的目的 是为了减少程序并发执行时的所付出的时空开销。 解决问题的基本思路: 把进程的两项功能--“独立分配资源”与“被调度分派执行”分离开来; 即对作为调度和分派的基本单位,不同时作为独立分配资源的单位;对拥有资源的单位,不对之进行频繁切换 线程的引入 进程作为系统资源分配和保护的独立单位,不需要频繁地切换; 线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换. 在这种指导思想下,产生了线程的概念

文档评论(0)

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

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

1亿VIP精品文档

相关文档