- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统学习PPT 第二章 进程1
2.3.3 线程结构 寄存器 静态数据 程序代码 栈 寄存器 进程2 动 态 堆 内存 多进程结构(用户视图) 静态数据 程序代码 栈 进程1 动 态 堆 内存 寄存器 2.3.3 线程结构 静态数据 程序代码 栈 栈 寄存器 寄存器 线程1: 线程2: 进程 动 态 堆 内存 多线程结构(用户视图) 2.3.4 线程的实现 2.3.1 用户级别线程 User-level thread 2.3.2 核心级别线程 Kernel-level thread 2.3.3 混合线程 Hybrid approach 2.3.4.1 用户级别线程 实现方法: 基于library函数,系统不可见 线程创建、撤销、状态转换在目态完成 TCB在用户空间,每个进程一个系统栈 优点: 不依赖于操作系统,调度灵活 切换速度快 缺点:同一进程中多个线程不能真正并行,一个线程进入系统受阻,进程中其它线程不能执行 2.3.4.1 用户级别线程 运行系统 TCB 进程 线程 核心栈 进程表 用户空间 系统空间 2.3.4.2 核心级别线程 实现方法: 基于系统调用 创建、撤销、状态转换由操作系统完成 优点: 同一进程内多线程可以并行执行 一线程进入核心等待,其它线程仍可执行 缺点: 系统开销大,同一进程内多线程切换速度慢 调度算法不能灵活控制 2.3.4.2 核心级别线程 进程 线程 核心栈 进程表 用户空间 系统空间 TCB 2.3.4.3 混合线程 Solaris例子 User level thread: 由Lib程序支持(创建.调度) Light weighted process(LWP): 由Lib程序支持 每个task至少一个LWP 用戶级别线程与LWP可以多对多 只有与LWP相联系的用户线程向前推进 Kernel level thread: 由kernel 支持 每个核心线程与唯一一个LWP对应 核心线程可与CPU多对多,可对一 2.3.4.3 混合线程(Solaris) CPU task1 task2 task3 kernel User level thread Lightweight process Kernel thread 2.3.5 线程的应用 内在的多控制流 生产-消费问题 多线程优于多进程 快100倍! 提高处理机与设备的并行性 多处理机环境 提高处理机利用率,加快进程推进速度 小结:作业、进程、线程 作业与进程 作业进入内存后变为进程 一个作业通常与多个进程相对应 进程与线程 不支持多线程的系统,可视为单线程进程 一个进程一般包含多个线程,至少包含一个线程 * 2.3 线程的基本概念 1. 什么是线程 线程是比进程更小的活动单位,它是进程中的一个执行路径。 线程可以这样来描述: ? 进程中的一条执行路径; ? 它有自己私用的堆栈和处理机执行环境 ; ? 它与父进程共享分配给父进程的主存; ? 它是单个进程所创建的许多个同时存在的线程中的一个。 * 线程的特点 ? 创建一个线程比创建一个进程开销要小得多; ? 实现线程间通信十分方便,因为一个进程创建的多个线程可以共享地址区域和数据, 线程是一个动态的概念。 在进程内创建多线程,可以提高系统的并行处理能力,加快进程的处理速度。 线程的状态变迁 运 行 终止 创建 就绪 等待 线程控制块 TCB(Thread control block) 标志线程存在的数据结构, 其中包含对线程管理需要的全部信息. 内容 线程标识、线程状态 调度参数、现场(通用寄存器,PC,SP) 存放位置 用户级线程:目态空间(运行系统) 核心级线程:系统空间 线程结构 寄存器 静态数据 程序代码 栈 寄存器 进程2 动 态 堆 内存 多进程结构(用户视图) 静态数据 程序代码 栈 进程1 动 态 堆 内存 寄存器 线程结构 静态数据 程序代码 栈 栈 寄存器 寄存器 线程1: 线程2: 进程 动 态 堆 内存 多线程结构(用户视图) * 进程创建原语的实现框图 入口 查PCB总链 有同名 ? 向系统申请一个空的 PCB结构 有空PCB ? 将入口信息填入 PCB相应项 将PCB入就绪队列 将PCB入总链队列 返回进 程PID 出错 Y N 出错 * 程序描述 算法 create 输入:新进程的符号名,优先级,开始执行地址 输出:新创建
文档评论(0)