什么是线程.ppt

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

第五章 线程 5.1概述 什么是线程? 为什么需要引入线程? 内核线程和用户线程 线程的定义 线程(thread),有时也被称为轻量级进程(lightweight process , LWP) 线程是CPU使用的基本单元 线程由如下部分组成: 线程ID PC指针 一组寄存器 调用栈 同一进程内的所有线程共享代码段、数据段和其它操作系统资源 (如文件、信号等)。 单线程进程和多线程进程 5.1.1动机 应用程序通常实现得像一个具有多个控制线程的独立进程,例如: 网页浏览器可能包括: 显示图片和文字的线程 从网络接收数据的线程 字处理器可能包括: 格式化显示文本和图像的线程 读入用户键盘输入的线程 拼写和语法检查的线程 网页服务器可能包括: 许多完成相似或者不同功能的不同线程 5.1.2 优点 响应度高: 如果对一个交互式应用程序采用多线程,即使其部分阻塞或执行冗长的操作,那么该程序仍能够继续执行,从而增加了对用户的响应度。 资源共享: 线程默认共享它们所属进程的内存和资源。 优点 经济:创建和切换代价小 例如在Solaris 2中 进程创建要比线程创建慢30倍 进程上下文切换要比线程上下文切换慢5倍 多处理器体系结构的利用 单线程的进程只能运行在一个CPU上,无论系统中有多少个CPU。 5.1.3用户线程与内核线程 用户线程 在内核之上支持 在用户层通过线程库来实现 线程库支持创建、调度和管理线程,而无需内核干预 在单线程内核上,任何一个用户级线程若执行阻塞系统调用就会引起整个进程阻塞,即使还有其他线程可以在应用程序内运行 用户级线程库包括: POSIX Pthreads Mach C-threads Solaris 2 UI-threads 用户线程与内核线程 内核线程 由操作系统直接支持:内核负责在内核空间执行线程创建、调度和管理; 创建和管理比用户线程慢; 线程之间的阻塞相互独立(既一个线程执行阻塞系统调用时,内核可以调度进程里的其它线程执行); 更好的支持多CPU体系结构; 例如: Windows NT/2000 Solaris 2 Tru64 UNIX 5.2 多线程模型 用户线程和内核线程的对应关系,形成了三种多线程模型: 多对一模型(m:1) 一对一模型(1:1) 多对多模型 (m:n) 5.2.1多对一模型 多对一模型 多个用户线程映射到一个内核线程 线程的管理在用户空间内完成,效率比较高 通常用于不支持内核线程的系统上 缺点 一个线程阻塞将导致整个进程阻塞 多个线程不能并行运行在多处理器上 例如 Solaris 2系统的Green threads Unix的Pthreads 5.2.2一对一模型 一对一模型 每个用户线程都映射到一个用户线程上 提供了更好的并发性(某个线程的阻塞不一定导致进程的阻塞) 支持多处理器 缺点 创建用户线程造成的高开销 例如 Windows 95/98/NT/2000 OS/2 5.2.3多对多模型 多对多模型 多路复用了许多用户线程到同样数量或者更小数量的内核线程上。 m:n (m=n) 允许编程人员创建足够多的用户线程 避免线程阻塞引起进程阻塞、支持多处理器 例如 Solaris 2 IRIX HP-UX Tru64 UNIX 5.3若干多线程的问题 系统调用fork和exec 线程取消 信号处理 线程池 线程特定数据 5.3.1系统调用fork和exec fork 用于创建一个独立的、重复的进程 在多线程程序里,有的UNIX有两种形式的fork 一种复制进程中所有的线程 用于没有在fork后立即调用exec的情况 一种仅仅复制调用了系统调用fork的线程 用于在fork后立即调用exec的情况 exec参数所指定的程序会替换整个进程 5.3.2线程取消 线程取消 是在线程完成之前来终止进程的任务 例如: 多个线程并发执行以搜索数据库并且一个线程返回了结果 用户按下网页浏览器上的停止按钮,装入网页的线程就被取消 两种线程取消的情况 目标线程: 要被取消的线程 异步取消: 一个线程立即终止目标线程 要取消的线程正在更新与其它线程所共享的数据 往往并不收回所有系统资源 延迟取消: 目标线程不断的检查它是否应终止,允许一个线程检查它是否是在安全的点被取消。 (Pthread称这些点为取消点) 5.3.3 信号处理 信号在 UNIX 系统中用做通知进程某个特定事件已经发生了 信号是由特定事件的发生所产生的 产生的信号要发送到进程 一旦发送,信号必须要加以处理 忽略也是一种处理 同步和异步信号 同步信号 非法内存访问, 被零除 同步信号发送到执行操作而产生信号的同一进程 异步信号 一个信号是由运行进程之外的事件所产生 用特殊键 (Ctrl-C), 定时器时间到期 异步信号被发送到另一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档