第2章处理机管理 本章讲述内容: 2.1进程; 2.2进程控制块: 2.3进程的调度与管理; 2.4作业调度
第2章 处理机管理 2.1 2.2 2.3 本章讲述内容: 2.4 进程; 进程控制块; 进程的调度与管理; 作业调度
2.1进程 。2.1.1多道程序设计 1.单道程序设计环境特点 资源的独占性 程序A ·执行的顺序性 程序B 程序C ·结果的再现性 6 14 18202326 30时间 2.多道程序设计环境特点 (a)单道程序设计环境 图 …打印机输出 .执行的并发性程序A CPU执行 ·相互的制约性 程序都 程序C ·状态的多变性 9 1213151718 22时间 (b)多道程序设计环境
2.1 进程 • 2.1.1 多道程序设计 程序A 程序B 程序C 0 4 6 9 14 18 20 23 26 30 4 2 3 5 4 2 3 3 4 程序A 程序B 程序C 0 4 6 9 12 13 15 1718 22 (a) 单道程序设计环境 (b) 多道程序设计环境 时间 时间 打印机输出 CPU执行 图 例: . 1. 单道程序设计环境特点 资源的独占性 . . 执行的顺序性 结果的再现性 2. 多道程序设计环境特点 . 执行的并发性 . . 相互的制约性 状态的多变性
。2.1.2进程的定义 1.从3个方面来描述进程 。进程是程序的一次运行活动: ·进程的运行活动是建立在某个数据集合之上: .进程要在获得资源的基础上从事自己的运行活动。 2.进程定义 所谓“进程”,是指一个程序在给定数据集合上的一次执行过程,是系统进行资 源分配和运行调度的独立单位。 例:驼峰溜放控制过程中的进程。 。机车头从车尾把到达场里的货车推向驼峰,在那里按照 道盆 一列新货车一 不同去向(即进路)把车厢间的挂钩摘开, 轨道电路) 溜放中 一组车厢(称一勾车)借助驼 溜放中 的一勾车 峰的高度,将根据自己的去向 一列解体货车 的,勾车 3 溜到编组场的不同轨道, 组成一列新的货车。 5 驼蜂 。 扳道岔程序 6 到达场 缓行器 ·缓行器控制程序 ■ 雷达测速程序 ·雷达测长程序 ·巡回检测程序 雷达编组场 测速、测长 股道号
机车头从车尾把到达场里的货车推向驼峰,在那里按照 不同去向(即进路)把车厢间的挂钩摘开, 一组车厢(称一勾车)借助驼 峰的高度,将根据自己的去向 溜到编组场的不同轨道, 组成一列新的货车。 • 2.1.2 进程的定义 1. 从3个方面来描述进程 . . . 进程是程序的一次运行活动; 进程的运行活动是建立在某个数据集合之上; 进程要在获得资源的基础上从事自己的运行活动。 2. 进程定义 所谓“进程”,是指一个程序在给定数据集合上的一次执行过程,是系统进行资 源分配和运行调度的独立单位。 驼峰 到达场 编组场 溜放中 的一勾车 雷达 测速、测长 道岔 (轨道电路) 一列新货车 一列解体货车 缓行器 1 2 3 4 5 6 7 8 股道号 溜放中 的一勾车 例:驼峰溜放控制过程中的进程。 . . 扳道岔程序 . . . . 缓行器控制程序 雷达测速程序 雷达测长程序 巡回检测程序
3.进程的分类 ·系统进程:操作系统中用于管理系统资源的那些并发程序,它们向用户提供系统 服务,分配系统的资源。 ·用户进程:可以并发执行的用户程序段,它们是操作系统的服务对象,是系统资 源的实际享用者。 4.系统进程与用户进程的区别 ,系统进程间的相互关系由操作系统负责协调,以便有利于增加系统的并发性,提 高资源的整体利用率:用户进程间的相互关系要由用户自己(在程序中)安排,操作系 统会向用户提供一定的协调手段(以命令的形式)。 。系统进程直接管理有关的软、硬件资源的活动:用户进程不得插手资源管理。在 需要使用某种资源时,必须向系统提出申请,由系统统一调度与分配。 ·系统进程与用户进程都需要使用系统中的各种资源,在双方出现竞争时,系统进 程有优先获得资源、优先得以运行的权利。 。2.1.3进程的特征 1.进程与程序的关系 进程是程序的一次执行过程,程序是进程赖以存在的基础。这就是说,进程与程序 之间有一种必然的联系。但进程又不等同于程序,它们是两个完全不同的概念
用户进程:可以并发执行的用户程序段,它们是操作系统的服务对象,是系统资 源的实际享用者。 系统进程:操作系统中用于管理系统资源的那些并发程序,它们向用户提供系统 服务,分配系统的资源。 系统进程间的相互关系由操作系统负责协调,以便有利于增加系统的并发性,提 高资源的整体利用率;用户进程间的相互关系要由用户自己(在程序中)安排,操作系 统会向用户提供一定的协调手段(以命令的形式)。 3. 进程的分类 4. 系统进程与用户进程的区别 . . . 系统进程直接管理有关的软、硬件资源的活动;用户进程不得插手资源管理。在 需要使用某种资源时,必须向系统提出申请,由系统统一调度与分配。 系统进程与用户进程都需要使用系统中的各种资源,在双方出现竞争时,系统进 程有优先获得资源、优先得以运行的权利。 . . 进程是程序的一次执行过程,程序是进程赖以存在的基础。这就是说,进程与程序 之间有一种必然的联系。但进程又不等同于程序,它们是两个完全不同的概念。 • 2.1.3 进程的特征 1. 进程与程序的关系
2.进程与程序的区别 “进程”是一个动态的概念。进程强调的是程序的一次“执行”过程,因此它是 一个动态的概念:程序是一组有序指令的集合,在多道程序设计环境下,它不涉及“执 行”,因此是一个静态的概念。 ·不同进程可以执行同一个程序。从进程定义知,区分进程的条件一是所执行的程 序,二是数据集合。因此,即使多个进程执行同一个程序,只要它们运行在不同的数据 集合上,那么它们就是不同的进程。 。每个进程都有自己的生命期。当要完成某一项工作时,就“创建”一个进程。 个进程创建后,系统就感知到它的存在;完成预定的任务后,系统就“撤销”这个进程, 收回它所占用的资源。撤消后,系统就无法再感知到它。于是,从创建到撤消,这个时 间段就是一个进程的“生命期”。 ·进程之间具有并发性。在一个系统中,同时会存在多个进程,与它们对应的多个 程序同时在系统中运行,轮流占用CPU和各种资源。这正是多道程序设计的初衷,说明 这些进程在系统中并发执行着。 ·进程间会相互制约。由于进程是系统中资源分配和运行调度的单位,因此在对资 源共享和竞争中,必然会相互制约,影响了各自向前推进的速度
进程间会相互制约。由于进程是系统中资源分配和运行调度的单位,因此在对资 源共享和竞争中,必然会相互制约,影响了各自向前推进的速度。 进程之间具有并发性。在一个系统中,同时会存在多个进程,与它们对应的多个 程序同时在系统中运行,轮流占用CPU和各种资源。这正是多道程序设计的初衷,说明 这些进程在系统中并发执行着。 每个进程都有自己的生命期。当要完成某一项工作时,就“创建”一个进程。一 个进程创建后,系统就感知到它的存在;完成预定的任务后,系统就“撤销”这个进程, 收回它所占用的资源。撤消后,系统就无法再感知到它。于是,从创建到撤消,这个时 间段就是一个进程的“生命期”。 不同进程可以执行同一个程序。从进程定义知,区分进程的条件一是所执行的程 序,二是数据集合。因此,即使多个进程执行同一个程序,只要它们运行在不同的数据 集合上,那么它们就是不同的进程。 “进程”是一个动态的概念。进程强调的是程序的一次“执行”过程,因此它是 一个动态的概念;程序是一组有序指令的集合,在多道程序设计环境下,它不涉及“执 行”,因此是一个静态的概念。 2. 进程与程序的区别 . . . .
2.1.4进程的基本状态 1.进程的基本状态 提交, 调度 撤销 进程间由于共同协作和共 创健 就绪 运行 终止 享资源,导致在生命期中进程 超时 的状态不断发生变化。 事件发生 等待事件 创建状态:进程正在初创期,操作系 阻塞 三种最 统还没有把它列入到可执行的进程行列中。 基本的状态 ·就绪状态:一个进程已经具备了运行的条件,只要有机会获得CP0,它就可以投 入运行。 ·运行状态:一个进程获得了CPU正在执行中。若系统中只有一个CPU,那么任何 时候系统中最多只有一个进程处于运行状态。 ,阻塞状态:进程正在等待某事件(比如O的完成)的发生。在事件到来前,即 使把CPU分配给这个进程,它也无法运行。阻塞状态有时也被称为“等待状态” 终止状态:一个进程或正常结束,或因某种原因被强制结束。这时,系统正在为 其进行善后处理。 2.进程状态的变迁 一个进程的状态,可随自身的推进和外界环境的变化而变化,从一种状态“变迁 到另一种状态。进程状态变迁图中,箭头表示状态变迁的方向,文字是引起这种状态变 迁的原因
• 2.1.4 进程的基本状态 1. 进程的基本状态 就绪 提交 运行 阻塞 终止 调度 撤销 超时 事件发生 三种最 基本的状态 进程间由于共同协作和共 创建 享资源,导致在生命期中进程 的状态不断发生变化。 . 终止状态:一个进程或正常结束,或因某种原因被强制结束。这时,系统正在为 其进行善后处理。 创建状态:进程正在初创期,操作系 统还没有把它列入到可执行的进程行列中。 . 就绪状态:一个进程已经具备了运行的条件,只要有机会获得CPU,它就可以投 入运行。 . 运行状态:一个进程获得了CPU正在执行中。若系统中只有一个CPU,那么任何 时候系统中最多只有一个进程处于运行状态。 . 阻塞状态:进程正在等待某事件(比如I/O的完成)的发生。在事件到来前,即 使把CPU分配给这个进程,它也无法运行。阻塞状态有时也被称为“等待状态”。 . 2. 进程状态的变迁 一个进程的状态,可随自身的推进和外界环境的变化而变化,从一种状态“变迁” 到另一种状态。进程状态变迁图中,箭头表示状态变迁的方向,文字是引起这种状态变 迁的原因。
一个处于运行状态的进程,比如会由于提出输入/输出请求而使自己的状态变成为 阻塞。这属于进程自身推进过程中引起的状态变化。 ·在输入输出操作完成后,会使某个进程的状态由阻塞变为就绪。这属于由于外界 环境的变化而引起的状态变化。 ·并不是所有的进程状态之间都可以发生变迁的。可能的变迁如下所列。 ()创建就绪:一个进程创建完毕,就可被列入到可执行的进程行列中。于是, 系统通过提交,把它的状态从创建变为就绪。 (②)就绪→运行:需要一个新进程运行时,操作系统就在处于就绪状态的进程里挑 选目标,选中者的状态就从就绪变为运行。所以,“调度”是从就绪变到运行的原因。 (③)运行→就绪:引起进程状态从运行变到就绪,最常见的原因是“超 (4)时行阻塞:如果一个运行进程必须等待某个事件的发生而暂时无法再运行, 那么它的状态就由运行变为阻塞。这种需要进程等待的事件是很多的。比如,进程发一 个系统调用命令,操作系统却无法立即提供服务:比如进程发出一个资源请求,但却 时无法得到满足;又比如进程要等待/O的完成、等待另一个进程提供的输入数据、等 待来自另一个进程的消息等,都会使进程的状态从运行变为阻塞。 (⑤)阻塞就绪:当进程等待的事件发生时,处于阻塞状态的进程就变成了就绪。 (6)运行→终止:正在运行的进程完成了自己的工作,或由于其他原因必须异常结 束,那么该进程就会被撤消,由运行状态变为终止状态。 ·在这五种状态里,最基本、最实质性的是三种状态:就绪、运行、阻塞
就绪→运行:需要一个新进程运行时,操作系统就在处于就绪状态的进程里挑 选目标,选中者的状态就从就绪变为运行。所以, “调度”是从就绪变到运行的原因。 一个处于运行状态的进程,比如会由于提出输入/输出请求而使自己的状态变成为 阻塞。这属于进程自身推进过程中引起的状态变化。 并不是所有的进程状态之间都可以发生变迁的。可能的变迁如下所列。 在输入/输出操作完成后,会使某个进程的状态由阻塞变为就绪。这属于由于外界 环境的变化而引起的状态变化。 . . . (1) 创建→就绪:一个进程创建完毕,就可被列入到可执行的进程行列中。于是, 系统通过提交,把它的状态从创建变为就绪。 (2) 运行→就绪:引起进程状态从运行变到就绪,最常见的原因是“超 时”。 (3) 运行→阻塞:如果一个运行进程必须等待某个事件的发生而暂时无法再运行, 那么它的状态就由运行变为阻塞。这种需要进程等待的事件是很多的。比如,进程发一 个系统调用命令,操作系统却无法立即提供服务;比如进程发出一个资源请求,但却一 时无法得到满足;又比如进程要等待I/O的完成、等待另一个进程提供的输入数据、等 待来自另一个进程的消息等,都会使进程的状态从运行变为阻塞。 (4) (5) 阻塞→就绪:当进程等待的事件发生时,处于阻塞状态的进程就变成了就绪。 运行→终止:正在运行的进程完成了自己的工作,或由于其他原因必须异常结 束,那么该进程就会被撤消,由运行状态变为终止状态。 (6) . 在这五种状态里,最基本、最实质性的是三种状态:就绪、运行、阻塞
2.对进程状态更细致的划分 创健 可在进程五种状态基础上, 增加两种状态:“就绪/挂起”状态 提交 挂起 和“阻塞/挂起”状态。处于这两种 状态的进程,都表示它们是在辅存 激活 调度 撤销 而不是内存。只有通过“激活” 就绪挂起 就绪 运行 终止 挂起 超时 才可使这些进程的状态变迁为“就 3 绪”或“阻塞”,从而进入内存。 激活 等待事件 就绪/挂起状态:进程在 阻塞挂起 阻塞 辅存。只要被激活,进程就可以 挂起 调入内存,如果获得CPU就可以投入运行。 ·阻塞挂起状态:进程在辅存等待事件的发生。只要被激活,进程就可以调入到 内存里去等待事件的发生。 ·对几个变迁的解释 ()就绪/挂起状态:进程在辅存。只要被激活,进程就可调入内存,如果获得CPU 就可以投入运行。 (2)阻塞→阻塞/挂起:若当前没就绪进程可运行,且内存又缺少空闲区域装入新进 程,那就可从内存换出一个阻塞进程到辅存,使其状态成为阻塞/挂起,腾出内存区域。 (3)阻塞/挂起→就绪/挂起:如果一个处于阻塞挂起状态的进程所等待的事件发生 了,那么它的状态将变迁成为就绪/挂起状态,进程仍在辅存
就绪/挂起状态:进程在 辅存。只要被激活,进程就可以 调入内存,如果获得CPU就可以投入运行。 2. 对进程状态更细致的划分 就绪/挂起 就绪 激活 运行 阻塞 终止 调度 撤销 超时 事件发生 挂起 阻塞/挂起 激活 挂起 事件发生 创建 提交 挂起 可在进程五种状态基础上, 增加两种状态:“就绪/挂起”状态 和“阻塞/挂起”状态。处于这两种 状态的进程,都表示它们是在辅存 而不是内存。只有通过“激活” , 才可使这些进程的状态变迁为“就 绪”或“阻塞”,从而进入内存。 . . 阻塞/挂起状态:进程在辅存等待事件的发生。只要被激活,进程就可以调入到 内存里去等待事件的发生。 . . 对几个变迁的解释 就绪/挂起状态:进程在辅存。只要被激活,进程就可调入内存,如果获得CPU 就可以投入运行。 (1) 阻塞→阻塞/挂起:若当前没就绪进程可运行,且内存又缺少空闲区域装入新进 程,那就可从内存换出一个阻塞进程到辅存,使其状态成为阻塞/挂起,腾出内存区域。 (2) 阻塞/挂起→就绪/挂起:如果一个处于阻塞/挂起状态的进程所等待的事件发生 了,那么它的状态将变迁成为就绪/挂起状态,进程仍在辅存。 (3)
2.2进程控制块 。2.2.1进程的三个组成部分 PCB ■程序 。数据集合·进程控制块 为管理和控制进程,系统创建每个进程时,都为其开辟一个专用的存 程序 储区,随时记录它的动态特性。当一个进程被撤消时,系统就收回分配给 它的存储区。通常,把这一存储区称为该进程的“进程控制块PCB”。 数据集合 。 2.2.2进程控制块的内容 1.进程控制块的内容 标识信息 进程名 进程状态 ·标识信息:代表了一个进程的身份,是系统内部区 分不同进程的依据。 说明信息 程序存放位置 ·说明信息:随时反映进程的情况。 数据存放位置 ■现场信息:进程暂时让出处理机时,须把当前各种 通用寄存器内容 现场信息保存在PCB的固定单元里。这样,当进程再次获 现场信息 控制寄存器内容 得处理机时,就可以把这些信息置入处理机的相应寄存器 断点地址 中,恢复到被中断时的原有状态,保证进程正常执行。 进程优先数 管理信息 ·管理信息:系统通过这些信息管理、调度进程,使 队列指针 它们有条不紊地工作
现场信息:进程暂时让出处理机时,须把当前各种 现场信息保存在PCB的固定单元里。这样,当进程再次获 得处理机时,就可以把这些信息置入处理机的相应寄存器 中,恢复到被中断时的原有状态,保证进程正常执行。 标识信息:代表了一个进程的身份,是系统内部区 分不同进程的依据 。 进程控制块 2.2 进程控制块 • 2.2.1 进程的三个组成部分 . 程序 . 数据集合 . PCB 程序 数据集合 • 2.2.2 进程控制块的内容 . . . . 进程名 进程状态 程序存放位置 数据存放位置 通用寄存器内容 控制寄存器内容 断点地址 进程优先数 队列指针 标识信息 说明信息 现场信息 管理信息 说明信息:随时反映进程的情况 。 管理信息:系统通过这些信息管理、调度进程,使 它们有条不紊地工作。 为管理和控制进程,系统创建每个进程时,都为其开辟一个专用的存 储区,随时记录它的动态特性。当一个进程被撤消时,系统就收回分配给 它的存储区。通常,把这一存储区称为该进程的“进程控制块PCB” 。 1. 进程控制块的内容
2.进程间的切换 。所谓“进程间的切换”,是指将CPU的执行从一个进程切换到另一个进程。在有 的书里,把进程间的切换称为“进程间的上下文切换”。操作系统是通过进程PCB中的 现场保护区来实现进程间的切换的。 .比如,CPU先执行左边的进程P0。若在运行到点x处时,进程PO的执行被打断。为 充分利用CPU,须将CPU分配给别的进程使用,即进行进程间的切换,让CPU从执行一 个进程转而去执行另一个进程。 进程Po 操作系统 进程P1 。为此进入操作系统。若现在是要运 中断或系统调用 行进程P1,那就先把当前CPU的运行现 执行 场保护到进程PO的PCB里,然后用进程 保护现场到PCB0 P1的PCB里的现场信息对CPU进行加载 被打断 的断点x (即恢复进程P1的运行现场)。这样, 从PCB1现场保护区 CPU就开始运行右边的进程P1了。 获取现场信息 。到点y时,若进程P1的运行被打断, 执行 又进入操作系统去做进程间的切换。若现 中断或系统调用 在是要运行进程P0,那么先把当前CPU的 运行现场保护到进程PI的PCB里,然后用 保护现场到PCB1 ←被打断 进程PO的PCB里的现场信息对CPU进行加 从断点x 的断点y 恢复执行 载。这样,CPU就开始从点x往下运行左边 从PCBO现场保护区 执行 获取现场信息 的进程P0了
比如,CPU先执行左边的进程P0。若在运行到点x处时,进程P0的执行被打断。为 充分利用CPU,须将CPU分配给别的进程使用,即进行进程间的切换,让CPU从执行一 个进程转而去执行另一个进程。 2. 进程间的切换 所谓“进程间的切换”,是指将CPU的执行从一个进程切换到另一个进程。在有 的书里,把进程间的切换称为“进程间的上下文切换”。操作系统是通过进程PCB中的 现场保护区来实现进程间的切换的 。 . . 进程P0 操作系统 进程P1 中断或系统调用 保护现场到PCB0 从PCB1现场保护区 获取现场信息 中断或系统调用 保护现场到PCB1 从PCB0现场保护区 获取现场信息 执行 执行 执行 被打断 的断点x 从断点x 恢复执行 被打断 的断点y 到点y时,若进程P1的运行被打断, 又进入操作系统去做进程间的切换。若现 在是要运行进程P0,那么先把当前CPU的 运行现场保护到进程P1的PCB里,然后用 进程P0的PCB里的现场信息对CPU进行加 载。这样,CPU就开始从点x往下运行左边 的进程P0了。 . 为此进入操作系统。若现在是要运 行进程P1,那就先把当前CPU的运行现 场保护到进程P0的PCB里,然后用进程 P1的PCB里的现场信息对CPU进行加载 (即恢复进程P1的运行现场)。这样, CPU就开始运行右边的进程P1了。