- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、引入多线程的动机 引入进程的目的是为了使多个程序并发执行,以改善资源使用率、提高系统效率。 再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。 进程的两项功能 1. 进程是资源分配和保护基本单位。 2.进程同时又是一个可独立调度和分派的基本单位。 进程作为一个资源拥有者,在创建、撤消、切换中,系统必须为之付出较大时空开销。所以系统中进程的数量不宜过多,进程切换的频率不宜过高,但这也就限制了并发程度的进一步提高。 为解决此问题,人们想到将进程的上述两个功能分开,即对作为调度和分派的基本单位,不同时作为独立分配资源的单位;对拥有资源的单位,不对之进行频繁切换。 线程因而产生。 二、多线程环境中的进程与线程 1.多线程结构进程 多线程环境中进程的定义 进程是操作系统中除处理器外进行的资源分配和保护的基本单位,它有一个独立的虚拟地址空间,用来容纳进程映像(如与进程关联的程序与数据),并以进程为单位对各种资源实施保护,如受保护地访问处理器、文件、外部设备及其他进程(进程间通信)。 ? 多线程环境中的线程概念 线程是操作系统进程中能够并发执行的实体,是处理器调度和分派的基本单位。 每个进程内可包含多个可并发执行的线程。 线程自己基本不拥有系统资源,只拥有少量必不可少的资源:程序计数器、一组寄存器、栈。 同属一个进程的线程共享进程所拥有的主存空间和资源。 2.引入线程的好处 创建一个新线程花费时间少(结束亦如此) 两个线程的切换花费时间少 因为同一进程内的线程共享内存和文件,因此它们之间相互通信无须调用内核 3. 线程与进程的比较 线程具有进程的许多特征,故又称轻型进程,传统进程称重型进程。 在引入线程的OS中,每一进程都拥有多个线程,至少一个。 (1)调度 在传统OS中,拥有资源、独立调度和分派的基本单位都是进程,在引入线程的系统中,线程是调度和分派的基本单位,而进程是拥有资源的基本单位。 在同一个进程内线程切换不会产生进程切换,由一个进程内的线程切换到另一个进程内的线程时,将会引起进程切换。 (2)并发性 在引入线程的系统中,进程之间可并发,同一进程内的各线程之间也能并发执行。因而系统具有更好的并发性。 (4)系统开销 进程的创建和撤消的开销要远大于线程创建和撤消的开销,进程切换时,当前进程的CPU环境要保存,新进程的CPU环境要设置,线程切换时只须保存和设置少量寄存器,并不涉及存储管理方面的操作,可见,进程切换的开销远大于线程切换的开销。 同时,同一进程内的各线程由于它们拥有相同的地址空间,它们之间的同步和通信的实现也变得比较容易。 三、线程的实现 多线程的实现分为三类: 用户级线程 (User Level Thread,ULT):对于这种线程的创建、撤消、和切换,由用户程序来实现,内核并不知道用户级线程的存在。 内核级线程(Kernel Level Thread ,KLT) :它们是依赖于内核的,即无论是用户进程中的线程,还是系统进程中的线程,它们的创建、撤消、切换都由内核实现。 混合式线程:同时支持ULT和KLT两种线程。 1.用户级线程(ULT) 由应用程序完成所有线程的管理 通过用户空间中的线程库来完成 内核并不知道线程的存在。 线程库 提供线程运行管理系统: 创建、撤消线程 在线程之间传递消息和数据 调度线程执行 保护和恢复线程上下文 例子:Java线程库 用户级线程的优点和缺点 优点: 线程切换不调用核心 调度是应用程序特定的:可以按需要选择好的算法 ULT可运行在任何操作系统上(只需要线程库),可以在一个不支持线程的OS上实现 缺点: 由于大多数系统调用是阻塞的,因此一个用户级线程的阻塞会引起整个进程的阻塞。 核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上 2.核心级线程(KLT) 所有线程管理由核心完成 没有线程库,但核心提供线程API来使用线程 核心维护进程和线程的上下文 线程之间的切换需要核心支持 以线程为基础进行调度 例子:Windows 2003、OS/2 核心级线程的优点和缺点 优点: 对多处理器,核心可以同时调度同一进程的多个线程 阻塞是在线程一级完成 缺点: 在同一进程内的线程切换调用内核,系统开销较大 * 2.4 线程及其实现 进程 进程PCB 资源 线程 控制块 用户栈 核心栈 线程 控制块 用户栈 核心栈 … 线程n 控制块 用户栈 核心栈 存储区 存储空间 全局数据 程序代码 线程1 线程1 线程 控制块 … 线程2 线程1 线程 控制块 用户栈 核心栈 线程i 线程n (3)拥有资源 无论是传
您可能关注的文档
- 1.5_功率场效应晶体管、1.6_绝缘栅双极型晶体管.ppt
- 1.7电容的练习.doc
- 1.C语言概述.ppt
- 01.VLAN拓扑.ppt
- 1.对磷扩散的认识.ppt
- 01.计算机主机系统的组成.ppt
- 1.区域性的工业布局研究.doc
- 01.声现象.doc
- 1.音频技术基本知识.doc
- 01----Linux原理及应用--简介.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)