线程及其实现.ppt

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

线程及其实现 1 引入多线程技术的动机 2 多线程环境中的进程和线程 3 线程的实现 4 实例研究:Solaris的进程与线程 5实例研究:Windows2000/XP的进程与线程 1 引入多线程技术的动机 考察一个文件服务器的例子 单线程(结构)进程(Single Threaded Process) 多线程(结构)进程(Multiple Threaded process) 单线程结构进程给并发程序设计效率带来问题 ?进程切换开销大 ?进程通信代价大 ?进程之间的并发性粒度较粗,并 发度不高 ?不适合并行计算和分布并行计算 的要求 ?不适合客户/服务器计算的要求。 线程的概念(1) 操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率, 操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。 线程的概念(2) 解决问题的基本思路: ?把进程的两项功能--“独立分配资源”与“被调度分派执行”分离开来, ?进程作为系统资源分配和保护的独立单位,不需要频繁地切换; ?线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。 线程的概念(3) MS-DOS支持单用户进程,进程是单线程的; 传统UNIX支持多用户进程,进程是单线程的。 很多著名操作系统都支持多线程(结构)进程,如:Solaris 、Mach 、SVR4、OS/390、OS/2、WindowNT、Chorus等; JAVA的运行引擎则是单进程多线程的例子。 线程的概念(4) 线程接口规范 Solaris Thread接口规范、 OS/2 Thread接口规范、 Windows NT Thread接口规范; IEEE推出多线程程序设计标准POSIX 1003.4a, 2.4.2 多线程环境中的进程与线程 ? 单线程进程的内存布局和运行 管理和执行相分离的进程模型 多线程进程的内存布局 多线程环境中进程的定义 进程是操作系统中进行保护和资源分配的基本单位。它具有: ?一个虚拟地址空间,用来容纳进程的映像; ?对处理器、其他(通信的)进程、文件和I/O资源等的存取保护机制。 ? 多线程环境中的线程概念 线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。 线程主要组成 ?线程执行状态(运行、就绪、…); ?当线程不运行时,有一个受保护的线程上下文, 用于存储现场信息。所以,线程也可被看作是执行在进程内的一个独立的程序计数器; ?一个执行堆栈 ?一个容纳局部变量的主存存储区。 线程具有以下特性 ?并行性: ?共享性: ?动态性: ?结构性: 线程的内存布局 线程又称轻量进程 ?线程运行在进程的上下文中,并使用进程的资源和环境。 ?系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程,否则该进程无法被调度执行。 ?线程的状态(1) 线程状态有:运行、就绪和阻塞,线程的状态转换也类似于进程。 挂起状态对线程是没有意义的,如果进程挂起后被对换出主存,则它的所有线程因共享了进程的地址空间,也必须全部对换出去。 线程的状态(2) 处于运行态的线程阻塞时,对某些线程实现机制,所在进程也转换为阻塞态,即使这个进程存在另一个处于就绪态的线程; 对另一些线程实现机制,如果存在另外一个处于就绪态的线程,则调度该线程处于运行状态,否则进程才转换为阻塞态。 线程管理和线程库(1) 多线程技术利用线程包(库)提供线程原语集来支持多线程运行, 有的操作系统直接支持多线程,而有的操作系统不支持多线程。 线程包(库)可分成两种:用户空间中运行的线程包(库)和内核中运行的线程包(库)。 线程管理和线程库(2) 线程包(库)提供一组API,支持应用程序创建、调度、撤销和管理线程的运行。基本线程控制原语: ?孵化(Spawn):又称创建线程。 ?封锁(Block):又称阻塞线程。 ?活化(Unblock):又称恢复线程。 ?结束(Finish):又称撤销线程。 线程库 多线程的操作系统和语言都提供了线程库,如Mach的C-threads和Java线程库,支持应用程序创建、调度、和管理用户级线程的运行。 线程库实质上是多线程应用程序的开发和运行支撑环境。线程库至少应提供以下功能:孵化、封锁、活化、结束、通信、同步、调度等。每个线程库应提供给用户级的API编程

文档评论(0)

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

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

1亿VIP精品文档

相关文档