Presentation is loading. Please wait.

Presentation is loading. Please wait.

© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型.

Similar presentations


Presentation on theme: "© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型."— Presentation transcript:

1

2 © 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型 2.6 Solaris 的进程和线程模型 2.7 NT 的进程和线程模型

3 © 2001 孟静制作 版权所有 2.1 CPU 管理概述 n CPU 管理内容或问题由何决定? n CPU 管理功能类型 n CPU 管理功能要完成的工作:

4 © 2001 孟静制作 版权所有 CPU 管理内容或问题由何决定? u 硬件背景 u 用户要求 CPU 数量和是否并发两因素影响最大

5 © 2001 孟静制作 版权所有 CPU 管理功能类型 n 单处理机单任务模型 n 单处理机多任务模型 n 多处理机多任务模型

6 © 2001 孟静制作 版权所有 CPU 管理功能要完成的工作: 1. 启动程序执行 2. 处理程序结束工作 3. 提高对 CPU 的利用率, 实现并发技术 4. 向用户程序提供与 CPU 使用相关的用户接口 5. 在多 CPU 硬件背景下负责多个 CPU 登录、分配和 通讯等管理工作

7 © 2001 孟静制作 版权所有 1. 启动程序执行 将 CPU 交给用户程序使用 重要工作: F 将程序装入内存 F 置 PC

8 © 2001 孟静制作 版权所有 2. 处理程序结束工作 将 CPU 的使用权从用户手中收回 收尾处理工作: F 程序结束系统调用指令 F 中断 进入操作系统,释放资源、返回结果 信息或错误信息、返回父程序。

9 © 2001 孟静制作 版权所有 3. 提高对 CPU 的利用率, 实现并发技术 实现多个程序对 CPU 的并发共享

10 © 2001 孟静制作 版权所有 4. 向用户程序提供与 CPU 使用相关的用 户接口 操作系统提供的系统调用中与 CPU 使用相关的有: F 在一个程序中启动另一程序 F 程序结束 F 关于信号操作的一组系统调用等等

11 © 2001 孟静制作 版权所有 2.2 进程管理 进程模型的功能与接口: ( 1 )向用户提供多任务使用方式 ( 2 )向用户程序提供一组系统调用 进程模型的实现是围绕进程三态转 换进行的。

12 © 2001 孟静制作 版权所有 2.2 进程管理 2.2.1 进程三态的转换过程分析 2.2.2 进程三态转换的实现中所需的数 据结构和子程序 2.2.3 专题: CPU 调度算法

13 © 2001 孟静制作 版权所有 2.2.1 进程三态的转换过程分析 1.“ 运行 -> 等待 ” 、 “ 等待 -> 就绪 ” 、 “ 就绪 -> 运行 ” 、 “ 等待 -> 运行 ” 2.“ 运行 -> 就绪 ” 3.“ 建立 -> 就绪 ” 、 “ 建立 -> 运行 ” 4.“ 运行 -> 结束 ”

14 © 2001 孟静制作 版权所有 ( 进程三态转换原因和 实现工作内容 )

15 © 2001 孟静制作 版权所有 2.2.2 进程三态转换的实现中所需 的数据结构和子程序 图 ( 进程模型的数据结构与子程序 ) 、 (PCB 表的内容 ) 、 (“ 建立进程 ” 子程序的框图 ) 、 (“ 进程切换 ” 子程序的框图 )

16 © 2001 孟静制作 版权所有 2.2.3 专题: CPU 调度算法 衡量 CPU 调度算法的标准: u CPU 利用率 u 用户程序响应时间 u 系统吞吐量 等 ……

17 © 2001 孟静制作 版权所有 调度算法 : 1. 先进先出 ( 最先进入就绪态的进程,最先运行 ) 2. 轮转调度法 ( 时间片法 ) 3. 优先级调度法 ( 一种是短作业优先法 ) 4. 多级反馈法 ( 多重队列法 ) 5. 策略驱动法 ( 基于对各个用户承诺的算法 ) 6. 二级调度法 ( 决定用户进程在后备队列和就绪队列 的转换 )

18 © 2001 孟静制作 版权所有 2.3 进程模型实例分析 :UNIX 早期 版本的 CPU 管理子系统 ( 进程模型 ) 2.3.1 UNIX 下如何建立进程和在一个程序中 启动另一个程序 2.3.2 UNIX 的进程层次和初启过程 2.3.3 UNIX 进程模型的基本结构和工作过程

19 © 2001 孟静制作 版权所有 2.3.1 UNIX 下如何建立进程和在一个程 序中启动另一个程序 每个进程由进程标识符( pid, 一个整数)唯一标别 u fork 系统调用 u exec 系统调用 u wait 系统调用 典型地,子进程在 FORK 后用 EXECVE 系统调 用来用一个新程序覆盖进程内存空间

20 © 2001 孟静制作 版权所有 Fork 系统调用 : 功能 : 建立子进程 返回值 : 对子进程返回 0, 对父进程返回子进 程标识符 exec 系统调用: 输入参数 : 新程序名,... 功能 : 以指定程序覆盖当前进程的程序代码 wait 系统调用: 输入参数:进程号 功能:等待指定进程结束

21 © 2001 孟静制作 版权所有 图 (UNIX 命令解释程序 shell 的内部部分代 码 ) 图 (fork 内部实现过程中父子进程的内存空 间内容和 proc 等数据结构的内容 )

22 © 2001 孟静制作 版权所有 2.3.2 UNIX 的进程层次和初启过程 n 图 (UNIX 的进程层次 ) n 图 ( 注册周期 )

23 © 2001 孟静制作 版权所有 2.3.3 UNIX 进程模型的基本结构 和工作过程 n 图 (UNIX 处理机管理总体实现机制 )

24 © 2001 孟静制作 版权所有 1. 每个进程的进程管理信息存放在 proc 结构和 user 结构中 2. ppda 区 3. 除了进程 0 外,每个进程都在两种状态之一运行 :核心态和用户态 4.UNIX 的 CPU 调度算法,采用优先级调度算法 图形说明 :

25 © 2001 孟静制作 版权所有 2.5 线程模型 2.5.1 线程概念 2.5.2 线程的作用和必要性 2.5.3 线程的实现

26 © 2001 孟静制作 版权所有 2.5.1 线程概念 引例: 问题: 一个文件服务器 ( 进程 ), 由于等待盘操作 而经常被阻塞 解决办法 :服务进程设多个控制线索 好处: 文件服务的吞吐率和性能都提高了

27 © 2001 孟静制作 版权所有 图 2.14 (a) 三个进程, 各有一个线程。 (b) 一个进程, 有三个线程

28 © 2001 孟静制作 版权所有 每个线程的内容 每个进程的内容 程序计数器 地址空间 堆栈 全局变量 寄存器组 打开文件 子线程 子进程 状态 定时器 信号 信号量 记帐信息 图 2.15 线程和进程的内容比较

29 © 2001 孟静制作 版权所有 线程的特点: u 线程(轻量级进程)严格顺序执行 u 所有的线程有完全相同的地址空间 u 线程间无保护 u 线程间共享同一组打开的文件、子进 程、定时器、信号等

30 © 2001 孟静制作 版权所有 2.5.2 线程的作用和必要性 n 图 2.16 进程中线程的三种组织方式。 (a) 调度者 / 工作者模型 (b) 组模型 (c) 流水线模型 n 表 2.3 三种构造服务器的方法

31 © 2001 孟静制作 版权所有 2.5.3 线程的实现 1. 线程包的内容 2. 用户态、核心态线程 3. 实例

32 © 2001 孟静制作 版权所有 线程包的功能 (1). 线程建立与撤消 ( 静态线程、动态线程) (2). 线程调度 (3). 进程全局变量和线程全局变量 (4). 线程互斥与同步

33 © 2001 孟静制作 版权所有 (不同线程使用同一 全局变量造成的冲突) (线程可以有私有的 全局变量)

34 © 2001 孟静制作 版权所有 解决私有全局变量访问问题的方法 之一: 为全局变量分配一块存储器, 并将它作 为一个额外的参数传递给线程中的每个过程 调用是 : create_global("bufptr"); set_global("bufptr", &buf); ptr = read_global("bufptr");

35 © 2001 孟静制作 版权所有 之二: 引入一些新的库函数来创 建、设置和读这些线程内的全局 变量。

36 © 2001 孟静制作 版权所有 2. 用户态、核心态线程 —— 线程包的用户空间实现 和核心空间实现 ? 两种方法的优缺点分析

37 © 2001 孟静制作 版权所有 用户级线程包的问题 第一个是阻塞型系统调用的实现方法 第二个是在一个线程开始运行以后, 除非它 自愿放弃 CPU, 否则没有其它线程能得到 运行 第三个是 线程不停地进行系统调用

38 © 2001 孟静制作 版权所有 3. 用户级线程包实例 Open Software Foundation 的分布式计算环境 ( DEC )的线程包 : 五类函数调用 第一类函数用于线程管理, 它们允许线程被创建和 撤销 第二类函数用于杀死线程 第三类函数用于选择线程调度算法 第四类是线程全局变量的管理函数 第五类是模板的建删和设置

39 © 2001 孟静制作 版权所有 2.6 Solaris 的进程和线程模型 2.6.1 用户态线程、 LWP 、核心线程的区 别和关系,以及为什么同时需要它们 2.6.2 Solaris 线程模型的设计目标和实现机 制总瞰 2.6.3 SVR4 和 SVR4.2MP 的进程和线程模 型概述

40 © 2001 孟静制作 版权所有 2.6.1 用户态线程、 LWP 、核心线程的区 别和关系及为什么同时需要它们 图 2.20 Solaris 进程和线程模型的总体设计思想 图 2.21 LWP 实现用户态线程

41 © 2001 孟静制作 版权所有 2.6.2 Solaris 线程模型的设计目标 和实现机制总瞰 Solaris 线程模型的设计目标: u 能够描述各种情况下的线程间工作机制 u 支持代价尽可能小的线程 u 既支持单 CPU 实现,又支持多 CPU 实现 u · 保持对现有 UNIX 版本的兼容性

42 © 2001 孟静制作 版权所有 图 2.30 Solaris 进程和线程模型 的实现机制总貌

43 © 2001 孟静制作 版权所有 Solaris 的进程和线程模型的特点: 1. 支持完全可抢先 2. 支持 SMP 3. 核心多线程结构 4. 由核心线程、 LWP 、用户级 线程、进程这四级构成的模型

44 © 2001 孟静制作 版权所有 2.6.3 SVR4 和 SVR4.2MP 的进程 和线程模型概述

45 © 2001 孟静制作 版权所有 2.7 NT 的进程和线程模型 Windows NT 的 CPU 管理模型的特点: 1. 多任务(多进程)、多线程、对称多处理 2.NT 体现为多个服务器进程,每个服务器进 程使用多个线程来处理同时从多个客户来的 请求 3.NT 进程、线程均被作为对象实现,并通过 对象服务访问

46 © 2001 孟静制作 版权所有 4.NT 进程管理程序在它所管理的子进程之间 不具有父进程 / 子进程或其他关系 5. 在 NT 中,基本的调度实体是线程而不是进 程,采用动态优先级多级调度队列算法,允 许可抢先但核心代码不可被抢先 6. 在进程间共享对象的优越功能及灵活的内部 进程通信能力,进程对象和线程对象都具有 内部同步能力

47 © 2001 孟静制作 版权所有 ( 图 2.31 NT 进程和线程模型 实现机制总貌 )

48 © 2001 孟静制作 版权所有 LINUX 的特点: u 性能非常快 u 进程与任务两种内外机制的并存和特殊关系 u 进程状态的定义与其他 UNIX 系统有些不同 u 快中断(可抢夺式调度)与慢中断(不可抢 夺式)两种中断类型的并存 u CPU 调度算法采用动态优先级算法

49 © 2001 孟静制作 版权所有 表 2.2 LINUX 进程管理类系统调用 图 2.14 LINUX 的 CPU 管理功能的内部实现 机制总瞰图 2.15 LINUX 启动过程 图 2.17 LINUX 的系统调用过程 图 2.18 LINUX 的 CPU 调度过程

50 © 2001 孟静制作 版权所有 分析: 1. 进程与任务的关系 2. 进程表 (process table) 3. 任务结构 task_struct 4. 进程状态 ( 任务状态 ) 5. 快中断和慢中断 6. 进程层次(0,1,...) 7. 进程调度


Download ppt "© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型."

Similar presentations


Ads by Google