- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 线程的基本概念 浙江大学 计算机学院 程序设计语言的挑战:低级语言 汇编语言 在多核SOC中是主流程序设计语言 DSP+ARM 用汇编控制各个器件 在CMP上怎么办 目前OS厂家连多核上OS启动都写不完备 工业控制需要 裸机+监控程序 目前情况 芯片厂家提供了新的编程接口,但是不开放 可以在UEFI平台上做设计,不能针对裸机 程序设计语言的挑战:结构化语言 结构化语言 C语言、Pascal、Fortran等 以函数、过程为基本单元进行抽象 本质上不支持多核 单入口单出口 不并发 程序设计语言的挑战:高级语言 快速开发语言/工具 可以由虚拟机平台支持多核完成 新型语言 Ct语言 并行编程模型 对C和C++进行了扩展 将任务分配给多个处理器 适应复杂的并行处理 开发人员能够像为一个处理器核编写应用程序一样编程 代码在进行编译和运行的时候进行多核优化 降低编程难度 猜测并行多线程技术 Speculative Parallel Threading,SPT 在万亿级计算平台上加速难以并行化的单线程应用 将串行代码猜测并行化后投机执行 支持硬件或者运行监测软件会验证投机执行的结果,在投机执行失败后发起恢复重新执行 结果 SPEC 2000 int应用gcc中抽取代码片段使用软件事务性内存执行SPT的效果,在4路SMP平台上运行,性能比串行程序高1倍 在普通的串行程序上获得的性能增益将达10%以上 目前的做法 1、线程 2、共享内存 3、消息 多线程的概念 线程(thread) 进程上下文(context)中执行的代码序列 轻量级进程(light weight process) 在支持多线程的系统中 进程成为资源分配和保护的实体 线程是被调度执行的基本单元。 进程的资源 包括进程的地址空间,打开的文件和I/O等 属于同一个进程的线程 共享该进程的代码段和数据段,打开的文件,信号等 还包含各自的线程ID,线程执行状态,CPU寄存器状态和栈 进程与线程 线程是“进程中的一条执行路径或线索” 或“进程中的一个可调度实体” 单线程与多线程模型 线程 可以获得快速的用户响应 如在C/S模式下,web server为每个用户连接运行一个线程; RPC服务器中,RPC服务进程会开启多个线程服务于每个RPC request 进程是拥有资源的基本单位(CPU,地址空间,I/O资源),进程中的线程可以共享这些资源 一些应用程序可以分成若干相对独立的部分,每一部分又一个线程来实现 线程间通信无需内核干预,需要进行线程间同步 多线程的优点 传统优点: 创建一个线程比创建一个进程的代价要小 终止一个线程比终止一个进程的代价要小 线程的切换比进程间的切换代价小 Eg: solaris中创建线程比进程快30倍,线程切换比进程切换快5倍 多核 充分利用多处理器 数据共享 数据共享使得线程之间的通信比进程间的通信更高效 快速响应特性 在系统繁忙的情况下,进程通过独立的线程及时响应用户的输入 线程计算模型 用户级线程 在应用软件中所创建和操纵的线程 内核级线程 操作系统实现大多数线程的方式 硬件线程 线程在硬件执行资源上的表现形式 可以使用纯硬件来实现硬件线程 使用可重构FPGA资源 用户级线程 用户级线程 有关线程的所有管理工作都由在用户级实现的线程库来支持 用户级线程特征 户级线程的创建和管理等操作无须内核参与,操作更快 并行性不高,一个线程被系统阻塞后,整个进程被阻塞 内核级线程 内核级线程 内核级线程的所有管理操作都是由操作系统内核完成的 特点 并行性高, 多个线程可被同时调度 充分利用多处理器 创建和管理代价高 多线程的映射模型 对于实现了用户级线程和内核级线程的操作系统,用户级线程和内核级线程之间的可以有不同的映射方式。 多对一模型 多对一模型把多个用户级线程映射到一个内核级线程。 线程的管理在用户空间实现,所以效率高。 当一个线程因调用系统调用被阻塞时,整个进程被阻塞。 多线程的映射模型(续) 一对一模型 一对一模型把每个用户级线程影射到一个内核级线程。 当一个线程阻塞时,其他线程仍然可以运行。 Each user-level thread maps to kernel thread.(纯核心级线程) Examples Windows 95/98/NT/2000 OS/2 多线程的映射模型(续) 多对多模型 多对多模型将m个用户级线程影射到n个内核级线程,m≥n。 用户可以创建所需要的用户级线程,通过分配适当数目的内核级线程获得并发执行的优势并节省系统资源。 Examples Solaris 2 Windows NT/2000 with the ThreadFiber package 多线程的映射模型
文档评论(0)