1 / 49

第二章 CPU 管理和进程、线程管理

第二章 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 数量和是否并发两因素影响最大.

gay
Download Presentation

第二章 CPU 管理和进程、线程管理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 2.1 CPU管理概述 • CPU管理内容或问题由何决定? • CPU管理功能类型 • CPU管理功能要完成的工作:

  3. CPU管理内容或问题由何决定? • 硬件背景 • 用户要求 CPU数量和是否并发两因素影响最大

  4. CPU管理功能类型 • 单处理机单任务模型 • 单处理机多任务模型 • 多处理机多任务模型

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

  6. 1.启动程序执行 将CPU交给用户程序使用 重要工作: • 将程序装入内存 • 置PC

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

  8. 3.提高对CPU的利用率,实现并发技术 实现多个程序对CPU的并发共享

  9. 4.向用户程序提供与CPU使用相关的用户接口 操作系统提供的系统调用中与CPU使用相关的有: • 在一个程序中启动另一程序 • 程序结束 • 关于信号操作的一组系统调用等等

  10. 2.2 进程管理 进程模型的功能与接口: (1)向用户提供多任务使用方式 (2)向用户程序提供一组系统调用 进程模型的实现是围绕进程三态转 换进行的。

  11. 2.2 进程管理 2.2.1进程三态的转换过程分析 2.2.2进程三态转换的实现中所需的数据结构和子程序 2.2.3 专题:CPU调度算法

  12. 2.2.1进程三态的转换过程分析 1.“运行->等待”、“等待->就绪”、“就绪->运行”、“等待->运行” 2.“运行->就绪” 3.“建立->就绪”、“建立->运行” 4.“运行->结束”

  13. (进程三态转换原因和实现工作内容)

  14. 2.2.2进程三态转换的实现中所需的数据结构和子程序2.2.2进程三态转换的实现中所需的数据结构和子程序 图(进程模型的数据结构与子程序)、 (PCB表的内容)、 (“建立进程”子程序的框图)、 (“进程切换”子程序的框图)

  15. 2.2.3 专题:CPU调度算法 衡量CPU调度算法的标准: • CPU利用率 • 用户程序响应时间 • 系统吞吐量 等……

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

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

  18. 2.3.1 UNIX下如何建立进程和在一个程序中启动另一个程序 每个进程由进程标识符(pid,一个整数)唯一标别 • fork系统调用 • exec系统调用 • wait系统调用 典型地,子进程在FORK后用EXECVE系统调 用来用一个新程序覆盖进程内存空间

  19. Fork系统调用: • 功能:建立子进程 • 返回值:对子进程返回0, 对父进程返回子进程标识符 • exec系统调用: • 输入参数:新程序名,... • 功能:以指定程序覆盖当前进程的程序代码 • wait系统调用: • 输入参数:进程号 • 功能:等待指定进程结束

  20. 图(UNIX命令解释程序shell的内部部分代码) 图(fork内部实现过程中父子进程的内存空间内容和 proc 等数据结构的内容)

  21. 2.3.2 UNIX的进程层次和初启过程 • 图(UNIX的进程层次) • 图(注册周期)

  22. 2.3.3 UNIX进程模型的基本结构 和工作过程 • 图(UNIX处理机管理总体实现机制)

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

  24. 2.5 线程模型 2.5.1 线程概念 2.5.2 线程的作用和必要性 2.5.3 线程的实现

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

  26. 图2.14 (a)三个进程, 各有一个线程。(b)一个进程, 有三个线程

  27. 每个线程的内容 每个进程的内容 程序计数器 地址空间 堆栈 全局变量 寄存器组 打开文件 子线程 子进程 状态 定时器 信号 信号量 记帐信息 图2.15 线程和进程的内容比较

  28. 线程的特点: • 线程(轻量级进程)严格顺序执行 • 所有的线程有完全相同的地址空间 • 线程间无保护 • 线程间共享同一组打开的文件、子进程、定时器、信号等

  29. 2.5.2 线程的作用和必要性 • 图2.16 进程中线程的三种组织方式。(a)调度者/工作者模型(b)组模型(c)流水线模型 • 表2.3 三种构造服务器的方法

  30. 2.5.3 线程的实现 1.线程包的内容 2.用户态、核心态线程 3.实例

  31. 线程包的功能 (1).线程建立与撤消(静态线程、动态线程) (2).线程调度 (3).进程全局变量和线程全局变量 (4).线程互斥与同步

  32. (不同线程使用同一全局变量造成的冲突)(线程可以有私有的全局变量)(不同线程使用同一全局变量造成的冲突)(线程可以有私有的全局变量)

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

  34. 之二:引入一些新的库函数来创建、设置和读这些线程内的全局变量。之二:引入一些新的库函数来创建、设置和读这些线程内的全局变量。

  35. 2.用户态、核心态线程 ——线程包的用户空间实现 和核心空间实现 ?两种方法的优缺点分析

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

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

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

  39. 2.6.1 用户态线程、LWP、核心线程的区别和关系及为什么同时需要它们 图 2.20 Solaris进程和线程模型的总体设计思想 图2.21 LWP实现用户态线程

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

  41. 图2.30 Solaris进程和线程模型的实现机制总貌

  42. Solaris的进程和线程模型的特点: 1.支持完全可抢先 2.支持SMP 3.核心多线程结构 4.由核心线程、LWP、用户级线程、进程这四级构成的模型

  43. 2.6.3 SVR4和SVR4.2MP的进程 和线程模型概述

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

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

  46. (图2.31 NT进程和线程模型实现机制总貌)

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

  48. 表2.2 LINUX进程管理类系统调用 图2.14 LINUX的CPU管理功能的内部实现机制总瞰图 2.15 LINUX启动过程 图2.17 LINUX的系统调用过程 图2.18 LINUX的CPU调度过程

  49. 分析: 1.进程与任务的关系 2.进程表(process table) 3.任务结构task_struct 4.进程状态(任务状态) 5.快中断和慢中断 6.进程层次(0,1,...) 7.进程调度

More Related