490 likes | 686 Views
第二章 CPU 管理和进程、线程管理. 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析: UNIX 早期版本的 CPU 管理子系统(进程模型) 2.4 处理机管理实例分析(2): linux CPU 管理(进程模型) 2.5 线程模型 2.6 Solaris 的进程和线程模型 2.7 NT 的进程和线程模型. 2.1 CPU 管理概述. CPU 管理内容或问题由何决定? CPU 管理功能类型 CPU 管理功能要完成的工作:. CPU 管理内容或问题由何决定?. 硬件背景 用户要求 CPU 数量和是否并发两因素影响最大.
E N D
第二章CPU管理和进程、线程管理 2.1 CPU管理概述 2.2 进程管理 2.3 进程模型实例分析:UNIX早期版本的CPU管理子系统(进程模型) 2.4处理机管理实例分析(2):linux CPU管理(进程模型) 2.5 线程模型 2.6 Solaris的进程和线程模型 2.7 NT的进程和线程模型
2.1 CPU管理概述 • CPU管理内容或问题由何决定? • CPU管理功能类型 • CPU管理功能要完成的工作:
CPU管理内容或问题由何决定? • 硬件背景 • 用户要求 CPU数量和是否并发两因素影响最大
CPU管理功能类型 • 单处理机单任务模型 • 单处理机多任务模型 • 多处理机多任务模型
CPU管理功能要完成的工作: 1.启动程序执行 2.处理程序结束工作 3.提高对CPU的利用率,实现并发技术 4.向用户程序提供与CPU使用相关的用户接口 5.在多CPU硬件背景下负责多个CPU登录、分配和通讯等管理工作
1.启动程序执行 将CPU交给用户程序使用 重要工作: • 将程序装入内存 • 置PC
2.处理程序结束工作 将CPU的使用权从用户手中收回 收尾处理工作: • 程序结束系统调用指令 • 中断 进入操作系统,释放资源、返回结果 信息或错误信息、返回父程序。
3.提高对CPU的利用率,实现并发技术 实现多个程序对CPU的并发共享
4.向用户程序提供与CPU使用相关的用户接口 操作系统提供的系统调用中与CPU使用相关的有: • 在一个程序中启动另一程序 • 程序结束 • 关于信号操作的一组系统调用等等
2.2 进程管理 进程模型的功能与接口: (1)向用户提供多任务使用方式 (2)向用户程序提供一组系统调用 进程模型的实现是围绕进程三态转 换进行的。
2.2 进程管理 2.2.1进程三态的转换过程分析 2.2.2进程三态转换的实现中所需的数据结构和子程序 2.2.3 专题:CPU调度算法
2.2.1进程三态的转换过程分析 1.“运行->等待”、“等待->就绪”、“就绪->运行”、“等待->运行” 2.“运行->就绪” 3.“建立->就绪”、“建立->运行” 4.“运行->结束”
2.2.2进程三态转换的实现中所需的数据结构和子程序2.2.2进程三态转换的实现中所需的数据结构和子程序 图(进程模型的数据结构与子程序)、 (PCB表的内容)、 (“建立进程”子程序的框图)、 (“进程切换”子程序的框图)
2.2.3 专题:CPU调度算法 衡量CPU调度算法的标准: • CPU利用率 • 用户程序响应时间 • 系统吞吐量 等……
调度算法: 1. 先进先出 (最先进入就绪态的进程,最先运行) 2. 轮转调度法 (时间片法) 3. 优先级调度法 (一种是短作业优先法) 4. 多级反馈法 (多重队列法) 5. 策略驱动法 (基于对各个用户承诺的算法) 6. 二级调度法 (决定用户进程在后备队列和就绪队列的转换)
2.3 进程模型实例分析:UNIX早期版本的CPU管理子系统(进程模型) 2.3.1 UNIX下如何建立进程和在一个程序中启动另一个程序 2.3.2 UNIX的进程层次和初启过程 2.3.3 UNIX进程模型的基本结构和工作过程
2.3.1 UNIX下如何建立进程和在一个程序中启动另一个程序 每个进程由进程标识符(pid,一个整数)唯一标别 • fork系统调用 • exec系统调用 • wait系统调用 典型地,子进程在FORK后用EXECVE系统调 用来用一个新程序覆盖进程内存空间
Fork系统调用: • 功能:建立子进程 • 返回值:对子进程返回0, 对父进程返回子进程标识符 • exec系统调用: • 输入参数:新程序名,... • 功能:以指定程序覆盖当前进程的程序代码 • wait系统调用: • 输入参数:进程号 • 功能:等待指定进程结束
图(UNIX命令解释程序shell的内部部分代码) 图(fork内部实现过程中父子进程的内存空间内容和 proc 等数据结构的内容)
2.3.2 UNIX的进程层次和初启过程 • 图(UNIX的进程层次) • 图(注册周期)
2.3.3 UNIX进程模型的基本结构 和工作过程 • 图(UNIX处理机管理总体实现机制)
图形说明: 1.每个进程的进程管理信息存放在proc结构和user结构中 2.ppda区 3.除了进程0外,每个进程都在两种状态之一运行:核心态和用户态 4.UNIX的CPU调度算法,采用优先级调度算法
2.5 线程模型 2.5.1 线程概念 2.5.2 线程的作用和必要性 2.5.3 线程的实现
2.5.1 线程概念 引例: 问题:一个文件服务器(进程),由于等待盘操作而经常被阻塞 解决办法:服务进程设多个控制线索 好处:文件服务的吞吐率和性能都提高了
图2.14 (a)三个进程, 各有一个线程。(b)一个进程, 有三个线程
每个线程的内容 每个进程的内容 程序计数器 地址空间 堆栈 全局变量 寄存器组 打开文件 子线程 子进程 状态 定时器 信号 信号量 记帐信息 图2.15 线程和进程的内容比较
线程的特点: • 线程(轻量级进程)严格顺序执行 • 所有的线程有完全相同的地址空间 • 线程间无保护 • 线程间共享同一组打开的文件、子进程、定时器、信号等
2.5.2 线程的作用和必要性 • 图2.16 进程中线程的三种组织方式。(a)调度者/工作者模型(b)组模型(c)流水线模型 • 表2.3 三种构造服务器的方法
2.5.3 线程的实现 1.线程包的内容 2.用户态、核心态线程 3.实例
线程包的功能 (1).线程建立与撤消(静态线程、动态线程) (2).线程调度 (3).进程全局变量和线程全局变量 (4).线程互斥与同步
(不同线程使用同一全局变量造成的冲突)(线程可以有私有的全局变量)(不同线程使用同一全局变量造成的冲突)(线程可以有私有的全局变量)
解决私有全局变量访问问题的方法 之一:为全局变量分配一块存储器, 并将它作 为一个额外的参数传递给线程中的每个过程 调用是: create_global("bufptr"); set_global("bufptr", &buf); ptr = read_global("bufptr");
之二:引入一些新的库函数来创建、设置和读这些线程内的全局变量。之二:引入一些新的库函数来创建、设置和读这些线程内的全局变量。
2.用户态、核心态线程 ——线程包的用户空间实现 和核心空间实现 ?两种方法的优缺点分析
用户级线程包的问题 第一个是阻塞型系统调用的实现方法 第二个是在一个线程开始运行以后, 除非它自愿放弃CPU, 否则没有其它线程能得到运行 第三个是 线程不停地进行系统调用
3.用户级线程包实例 Open Software Foundation的分布式计算环境(DEC)的线程包:五类函数调用 第一类函数用于线程管理, 它们允许线程被创建和 撤销 第二类函数用于杀死线程 第三类函数用于选择线程调度算法 第四类是线程全局变量的管理函数 第五类是模板的建删和设置
2.6 Solaris的进程和线程模型 2.6.1 用户态线程、LWP、核心线程的区别和关系,以及为什么同时需要它们 2.6.2 Solaris线程模型的设计目标和实现机制总瞰 2.6.3 SVR4和SVR4.2MP的进程和线程模型概述
2.6.1 用户态线程、LWP、核心线程的区别和关系及为什么同时需要它们 图 2.20 Solaris进程和线程模型的总体设计思想 图2.21 LWP实现用户态线程
2.6.2 Solaris线程模型的设计目标 和实现机制总瞰 Solaris线程模型的设计目标: • 能够描述各种情况下的线程间工作机制 • 支持代价尽可能小的线程 • 既支持单CPU实现,又支持多CPU实现 • ·保持对现有UNIX版本的兼容性
Solaris的进程和线程模型的特点: 1.支持完全可抢先 2.支持SMP 3.核心多线程结构 4.由核心线程、LWP、用户级线程、进程这四级构成的模型
2.6.3 SVR4和SVR4.2MP的进程 和线程模型概述
2.7 NT的进程和线程模型 Windows NT的CPU管理模型的特点: 1.多任务(多进程)、多线程、对称多处理 2.NT体现为多个服务器进程,每个服务器进程使用多个线程来处理同时从多个客户来的请求 3.NT进程、线程均被作为对象实现,并通过对象服务访问
4.NT进程管理程序在它所管理的子进程之间不具有父进程/子进程或其他关系 5.在NT中,基本的调度实体是线程而不是进程,采用动态优先级多级调度队列算法,允许可抢先但核心代码不可被抢先 6.在进程间共享对象的优越功能及灵活的内部进程通信能力,进程对象和线程对象都具有内部同步能力
LINUX的特点: • 性能非常快 • 进程与任务两种内外机制的并存和特殊关系 • 进程状态的定义与其他UNIX系统有些不同 • 快中断(可抢夺式调度)与慢中断(不可抢夺式)两种中断类型的并存 • CPU调度算法采用动态优先级算法
表2.2 LINUX进程管理类系统调用 图2.14 LINUX的CPU管理功能的内部实现机制总瞰图 2.15 LINUX启动过程 图2.17 LINUX的系统调用过程 图2.18 LINUX的CPU调度过程
分析: 1.进程与任务的关系 2.进程表(process table) 3.任务结构task_struct 4.进程状态(任务状态) 5.快中断和慢中断 6.进程层次(0,1,...) 7.进程调度