1、第2章 处理机管理,2.1,2.2,2.3,本章讲述内容:,2.4,进程;,进程控制块;,进程的调度与管理;,作业调度。,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,13,18,22,12,15,17,(a) 单道程序设计环境,(b) 多道程序设计环境,时间,时间,打印机输出,CPU执行,图例,:,.,单道程序设计环境特点,1.,资源的独占性,.,.,执行的顺序性,结果的再现性,多道程序设计环境特点,2.,.,执行的并发性,.,.,相互的制约性,状
2、态的多变性,机车头从车尾把到达场里的货车推向驼峰,在那里按照不同去向(即进路)把车厢间的挂钩摘开, 一组车厢(称一勾车)借助驼 峰的高度,将根据自己的去向 溜到编组场的不同轨道, 组成一列新的货车。,2.1.2 进程的定义,1.,从3个方面来描述进程,.,.,.,进程是程序的一次运行活动;,进程的运行活动是建立在某个数据集合之上;,进程要在获得资源的基础上从事自己的运行活动。,2.,进程定义,所谓“进程”,是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。,驼峰,到达场,编组场,溜放中 的一勾车,雷达 测速、测长,道岔 (轨道电路),一列新货车,一列解体货车,
3、缓行器,1,2,3,4,5,6,7,8,股道号,溜放中 的一勾车,驼峰溜放控制过程中的进程。,例:,.,.,扳道岔程序,.,.,.,.,缓行器控制程序,雷达测速程序,雷达测长程序,巡回检测程序,用户进程:可以并发执行的用户程序段,它们是操作系统的服务对象,是系统资源的实际享用者。,系统进程:操作系统中用于管理系统资源的那些并发程序,它们向用户提供系统服务,分配系统的资源。,系统进程间的相互关系由操作系统负责协调,以便有利于增加系统的并发性,提高资源的整体利用率;用户进程间的相互关系要由用户自己(在程序中)安排,操作系统会向用户提供一定的协调手段(以命令的形式)。,3.,进程的分类,4.,系统进
4、程与用户进程的区别,.,.,.,系统进程直接管理有关的软、硬件资源的活动;用户进程不得插手资源管理。在需要使用某种资源时,必须向系统提出申请,由系统统一调度与分配。,系统进程与用户进程都需要使用系统中的各种资源,在双方出现竞争时,系统进程有优先获得资源、优先得以运行的权利。,.,.,进程是程序的一次执行过程,程序是进程赖以存在的基础。这就是说,进程与程序之间有一种必然的联系。但进程又不等同于程序,它们是两个完全不同的概念。,2.1.3 进程的特征,1.,进程与程序的关系,进程间会相互制约。由于进程是系统中资源分配和运行调度的单位,因此在对资源共享和竞争中,必然会相互制约,影响了各自向前推进的速
5、度。,进程之间具有并发性。在一个系统中,同时会存在多个进程,与它们对应的多个程序同时在系统中运行,轮流占用CPU和各种资源。这正是多道程序设计的初衷,说明这些进程在系统中并发执行着。,每个进程都有自己的生命期。当要完成某一项工作时,就“创建”一个进程。一个进程创建后,系统就感知到它的存在;完成预定的任务后,系统就“撤销”这个进程,收回它所占用的资源。撤消后,系统就无法再感知到它。于是,从创建到撤消,这个时间段就是一个进程的“生命期”。,不同进程可以执行同一个程序。从进程定义知,区分进程的条件一是所执行的程序,二是数据集合。因此,即使多个进程执行同一个程序,只要它们运行在不同的数据集合上,那么它
6、们就是不同的进程。,“进程”是一个动态的概念。进程强调的是程序的一次“执行”过程,因此它是一个动态的概念;程序是一组有序指令的集合,在多道程序设计环境下,它不涉及“执行”,因此是一个静态的概念。,2.,进程与程序的区别,.,.,.,.,.,2.1.4 进程的基本状态,1.,进程的基本状态,就绪,提交,运行,阻塞,终止,调度,撤销,超时,事件发生,等待事件,三种最 基本的状态,创建,进程间由于共同协作和共享资源,导致在生命期中进程的状态不断发生变化。,.,终止状态:一个进程或正常结束,或因某种原因被强制结束。这时,系统正在为其进行善后处理。,创建状态:进程正在初创期,操作系统还没有把它列入到可执
7、行的进程行列中。,.,就绪状态:一个进程已经具备了运行的条件,只要有机会获得CPU,它就可以投入运行。,.,运行状态:一个进程获得了CPU正在执行中。若系统中只有一个CPU,那么任何时候系统中最多只有一个进程处于运行状态。,.,阻塞状态:进程正在等待某事件(比如I/O的完成)的发生。在事件到来前,即使把CPU分配给这个进程,它也无法运行。阻塞状态有时也被称为“等待状态”。,.,2.,进程状态的变迁,一个进程的状态,可随自身的推进和外界环境的变化而变化,从一种状态“变迁”到另一种状态。进程状态变迁图中,箭头表示状态变迁的方向,文字是引起这种状态变迁的原因。,.,就绪运行:需要一个新进程运行时,操
8、作系统就在处于就绪状态的进程里挑选目标,选中者的状态就从就绪变为运行。所以, “调度”是从就绪变到运行的原因。,一个处于运行状态的进程,比如会由于提出输入/输出请求而使自己的状态变成为阻塞。这属于进程自身推进过程中引起的状态变化。,并不是所有的进程状态之间都可以发生变迁的。可能的变迁如下所列。,在输入/输出操作完成后,会使某个进程的状态由阻塞变为就绪。这属于由于外界环境的变化而引起的状态变化。,.,.,.,(1),创建就绪:一个进程创建完毕,就可被列入到可执行的进程行列中。于是,系统通过提交,把它的状态从创建变为就绪。,(2),运行就绪:引起进程状态从运行变到就绪,最常见的原因是“超时”。,(
9、3),运行阻塞:如果一个运行进程必须等待某个事件的发生而暂时无法再运行,那么它的状态就由运行变为阻塞。这种需要进程等待的事件是很多的。比如,进程发一个系统调用命令,操作系统却无法立即提供服务;比如进程发出一个资源请求,但却一时无法得到满足;又比如进程要等待I/O的完成、等待另一个进程提供的输入数据、等待来自另一个进程的消息等,都会使进程的状态从运行变为阻塞。,(4),阻塞就绪:当进程等待的事件发生时,处于阻塞状态的进程就变成了就绪。,(5),运行终止:正在运行的进程完成了自己的工作,或由于其他原因必须异常结束,那么该进程就会被撤消,由运行状态变为终止状态。,(6),.,在这五种状态里,最基本、
10、最实质性的是三种状态:就绪、运行、阻塞。,就绪/挂起状态:进程在 辅存。只要被激活,进程就可以 调入内存,如果获得CPU就可以投入运行。,2.,对进程状态更细致的划分,就绪/挂起,就绪,激活,运行,阻塞,终止,调度,撤销,超时,事件发生,等待事件,挂起,阻塞/挂起,激活,挂起,事件发生,创建,提交,提交,挂起,可在进程五种状态基础上,增加两种状态:“就绪/挂起”状态和“阻塞/挂起”状态。处于这两种状态的进程,都表示它们是在辅存而不是内存。只有通过“激活”,才可使这些进程的状态变迁为“就绪”或“阻塞”,从而进入内存。,.,.,阻塞/挂起状态:进程在辅存等待事件的发生。只要被激活,进程就可以调入到
11、内存里去等待事件的发生。,.,.,对几个变迁的解释,就绪/挂起状态:进程在辅存。只要被激活,进程就可调入内存,如果获得CPU就可以投入运行。,(1),阻塞阻塞/挂起:若当前没就绪进程可运行,且内存又缺少空闲区域装入新进程,那就可从内存换出一个阻塞进程到辅存,使其状态成为阻塞/挂起,腾出内存区域。,(2),阻塞/挂起就绪/挂起:如果一个处于阻塞/挂起状态的进程所等待的事件发生了,那么它的状态将变迁成为就绪/挂起状态,进程仍在辅存。,(3),现场信息:进程暂时让出处理机时,须把当前各种现场信息保存在PCB的固定单元里。这样,当进程再次获得处理机时,就可以把这些信息置入处理机的相应寄存器中,恢复到被
12、中断时的原有状态,保证进程正常执行。,标识信息:代表了一个进程的身份,是系统内部区分不同进程的依据 。,进程控制块,2.2 进程控制块,2.2.1 进程的三个组成部分,.,.,.,程序,数据集合,PCB,程序,数据集合,2.2.2 进程控制块的内容,.,.,.,.,进程名,进程状态,程序存放位置,数据存放位置,通用寄存器内容,控制寄存器内容,断点地址,进程优先数,队列指针,标识信息,说明信息,现场信息,管理信息,说明信息:随时反映进程的情况 。,管理信息:系统通过这些信息管理、调度进程,使它们有条不紊地工作。,为管理和控制进程,系统创建每个进程时,都为其开辟一个专用的存储区,随时记录它的动态特
13、性。当一个进程被撤消时,系统就收回分配给它的存储区。通常,把这一存储区称为该进程的“进程控制块PCB” 。,1.,进程控制块的内容,比如,CPU先执行左边的进程P0。若在运行到点x处时,进程P0的执行被打断。为充分利用CPU,须将CPU分配给别的进程使用,即进行进程间的切换,让CPU从执行一个进程转而去执行另一个进程。,2.,进程间的切换,所谓“进程间的切换”,是指将CPU的执行从一个进程切换到另一个进程。在有的书里,把进程间的切换称为“进程间的上下文切换”。操作系统是通过进程PCB中的现场保护区来实现进程间的切换的 。,.,.,进程P0,进程P1,操作系统,中断或系统调用,保护现场到PCB0
14、,从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的
15、运行现场)。这样,CPU就开始运行右边的进程P1了。,.,就绪队列:系统中所有处于就绪状态的进程的PCB排成一队,称其为“就绪队列”。一般地,就绪队列里会有多个进程的PCB排在里面,它们形成处理机分配的侯选对象。,阻塞队列:所有处于阻塞状态的进程的PCB,应该根据阻塞的原因进行排队,每一个都称为一个“阻塞队列”。,2.2.3 进程控制块队列,PCB1,PCB2,PCB5,PCB10,PCB3,PCB7,PCB6,PCB8,PCB9,PCB4,-1,-1,-1,运行队列头指针,就绪队列头指针,阻塞队列1头指针,阻塞队列2头指针,运行队列:,就绪队列:,阻塞队列1:,阻塞队列2:,.,运行队列:处
16、于运行状态的PCB构成运行队列。在单CPU系统,任何时刻系统里都只有一个进程处于运行状态,因此运行队列里只能有一个PCB 。,.,.,A,2.3.1 进程调度算法,2.3 进程的调度与管理,1.,先来先服务调度算法,A,B,C,D,调度,就绪队列,到达,阻塞队列,完成,I/O完成,阻 塞,CPU,I/O,基本思想:调度时以到达就绪队列的先后次序选择占用处理机的进程。进程一旦占有处理机,就一直用下去,直至结束或因等待某事件而让出处理机。,2.,时间片轮转调度算法,基本思想:调度时为进程分配一个称为“时间片”的时间段,在使用完一个时间片后,即使进程没运行完,也要释放处理机,让给另一个进程使用,自己
17、则排到就绪队列末尾,等待下一次调度。,A,B,C,D,调度,就绪队列,到达,阻塞队列,完成,I/O完成,阻 塞,CPU,I/O,时间片到,UNIX操作系统里,为动态改变一个进程的优先数,采取了设置和系统计算并用的方法。设置用于一个进程变为阻塞时,系统会根据不同的阻塞原因,赋予阻塞进程不同的优先数。这个优先数将在进程被唤醒后发挥作用。计算进程优先数的公式是:p_pri=min127,(p_cpu/16+PUSER+p_nice),3.,优先数调度算法,基本思想:为系统中的每个进程规定一个优先数,就绪队列中具有最高优先数的进程有优先获得处理机的权利;如果几个进程的优先数相同,则对它们实行先来先服务
18、的调度。,确定进程优先数的几个因素,.,.,(1),根据进程的类型,(2),根据进程执行任务的重要性,(3),根据进程程序的性质,(4),根据对资源的要求,(5),根据用户的请求,进程的优先数可分静态和动态两类。所谓静态,是指在进程的整个生命期内优先数保持不变。其优点是实现简单,但欠灵活。所谓动态,是指在进程的整个生命期内可随时修正它的优先级别,以适应系统环境和条件的变化。,.,例:,p_cpu p_pri 进程的 进程被调度优先级 到的可能性,进程被调度 进程的 p_pri p_cpu 到的可能性 优先级,图例:,-上升,-下降,一开始,进入就绪队列的进程被 安排在队列0里,每个进程都可获得
19、8ms 长的时间片。如果进程不能在该时间区 间内完成自己的工作,那它就被下移到 队列1的尾部去等待调度。如果队列0为空,位于队列1首的进程将被调度,并可获得16ms长的时间片。如果进程不能在该时间区间内完成自己的工作,那么它就要被下移到队列2的尾部去等待调度。只有在队列0和1都为空时,队列2里的进程才可根据先来先服务的调度算法投入运行。,4.,多级队列调度算法,多级反馈队列调度的中心思想是,以使用CPU时间的长短,来区分进程,让进程在各就绪队列里移动。如果进程需要使用很多的CPU时间,那么它就会被移到优先级较低的就绪队列去。,.,.,比如,有多级反馈队列,它维持三个就绪队列,从队列0到队列2。
20、,先来先服务,时间片=8ms,时间片=16ms,队列0,队列1,完成,完成,阻塞/解除阻塞,时间片到,阻塞/解除阻塞,时间片到,队列2,完成,到达,调度程序总是先执行队列0里的所有进程,只有当队列0为空时,它才会去调度队列1中的进程。类似地,只有当队列0和1都为空时,它才会去调度队列2中的进程。到达队列1的进程会抢占队列2的进程的执行。同样,到达队列0的进程会抢占队列1的进程的执行。,.,.,.,5.,进程调度程序的主要功能,.,6.,引发调度程序工作的几个条件,.,记录系统中所有进程的有关情况,比如进程的当前状态,优先数等 。,.,确定分配处理机的算法,这是它的一项主要工作。,.,完成处理机
21、的分配和回收。,.,不可剥夺方式:只能由占用处理机的进程自己自愿放弃处理机。,进程调度程序负责具体的处理机分配,完成进程间的切换工作,因此它的执行频率是相当高的,是一个操作系统的真正核心。,一个进程从运行状态变成阻塞状态(如请求进行输入/输出操作);,(1),(2),一个进程正常运行结束后被撤销。,一个进程从运行状态变成就绪状态(如分时系统中,已运行满一个时间片);,(3),(4),一个进程从阻塞状态变成就绪状态(如等待的输入/输出操作完成);,.,注意:(1)、(4)两种情况肯定会引起进程调度程序工作,它将从就绪队列里选择一个进程占用处理机,完成进程间的切换;(2)、(3)两种情况可能会引起
22、进程调度,也可能是继续运行原进程,这与系统所采用的调度算法有关。,7.,进程占用处理机的时间,剥夺方式:当系统出现某条件时,就立即从当前运行进程手中抢夺过处理机,重新进行分配。在进程调度算法中,时间片轮转调度算法属于剥夺方式。,功能:在等待的事件发生后,由唤醒进程原语把等待进程从相应的阻塞队列里解放出来,进入就绪队列,重新参与调度。,撤消进程原语,功能:为新建进程申请进程控制块PCB,将创建者提供的信息填入PCB,将新建进程设置为就绪状态,按照调度算法把PCB排入就绪队列中。,2.3.2 进程管理的基本原语,1.,原语定义,操作系统提供若干基本操作,以便创建、撤消、阻塞和唤醒进程。为保证执行的
23、正确,要求它们以一个整体出现,不可分割。即一旦启动了相应的程序,就要保证做完,中间不能插入其它程序的执行序列。具有这种特性的程序被称为“原语”。为保证这种不可分割性,通常是利用屏蔽中断的方法。,2.,进程管理的基本原语,.,.,.,.,创建进程原语,阻塞进程原语,唤醒进程原语,功能:收回该进程占用的资源,将该进程的PCB从所在队列里摘下,把PCB所占用的存储区归还给系统。,功能:将被阻塞进程的现场信息保存到PCB中,状态改为阻塞; 将其PCB排到相应的阻塞队列中。若被阻塞的是自己,调用了该原语后,就重新分配处理机。,命令接口:操作系统提供各种操作命令,以便用户通过键盘控制程序的运行。这是系统在
24、作业控制一级给予用户的支持。,2.4 作业调度,2.4.1 用户与操作系统的两种接口,1.,两种接口,.,.,程序接口:操作系统提供各种系统调用命令,以让用户在编程时获得所需的功能服务。这是系统在程序一级给予用户的支持。,2.,若干概念,.,.,特权指令与非特权指令,把CPU的指令分为两类:一类是操作系统和用户都能使用的指令,称为“非特权指令”;一类是只能由操作系统使用的指令,称为“特权指令”。,管态与目态,这是CPU的两种工作状态:当其处于管态时,可执行包括特权指令在内的一切机器指令;当其处于目态时,只能执行非特权指令,禁止使用特权指令。,一般的过程调用,执行完后径直返回断点继续执行;但系统
25、调用可能会招致进程状态的变化,从而引起系统重新分配处理机,因此系统调用处理结束后,不一定是返回调用者断点处继续执行。,一般的过程调用,调用者与被调用者都运行在相同的CPU状态;但发生系统调用时,发出调用命令的调用者运行在目态,而被调用的对象则运行在管态。,.,系统调用命令,操作系统里预先编制了不同功能的子程序,用户可在自己的程序里调用它们,以求操作系统提供功能服务。这些子程序被称为“系统功能调用”程序,简称“系统调用”。,访管指令是一条非特权指令,功能是执行它就会产生一个软中断,促使中央处理机由目态转为管态,进入操作系统 。用户程序只有通过 访管指令,才能由目态转为管态、以达到调用系统调用命令
26、的目的。,.,访管指令,3.,系统调用与一般过程调用的区别,.,.,.,一般的过程调用,直接通过转移指令转向被调用的程序;但系统调用时,只能通过访管指令提供的统一的入口,由目态进入管态,然后转向相应的系统调用命令。,4.,操作命令,脱机命令接口和联机命令接口。,后备作业与后备作业队列:被系统接纳的作业,在未投入运行之前,称为后备作业。这些作业存放在辅助存储器里,由它们的JCB联接在一起,形成后备作业队列。后备作业队列里的作业,不参与对处理机的竞争,但系统是从它们里面挑选对象去参与对处理机的竞争的。,作业步:为了获得结果,一个作业需要经过若干个加工步骤。称每一个加工步骤为一个作业步。,作业:指用
27、户要求计算机系统做的一个计算问题或一次事务处理的完整过程。,2.4.2 作业与作业管理,.,.,.,作业控制块:把一个作业提交给系统时,系统为它开辟一个专用的存储区,随时记录作业的信息。该存储区称为作业的作业控制块JCB。,.,.,作业调度:按某种规则从后备作业队列里挑选作业进入内存,参与对处理机的竞争,这个过程称为作业调度。完成这项工作的程序,称为作业调度程序。作业调度程序中采用的规则,称为作业调度算法。,.,.,作业的生命期:从作业提交给系统,到作业运行完毕被撤消,这是一个作业的生命期。在这个期间,作业随着自己的推进,及环境的变化,状态也在不断变化。,作业的四个基本状态:提交,后备,运行,
28、完成。,2.4.3 作业的调度算法,在批处理系统中,使用作业的“周转时间”来描述系统的吞吐能力。假定作业 i 提交给系统的时间为S i,其完成的时间为W i。那么该作业的周转时间Ti是:Ti = W i S i 对于一批n个作业而言,它们的“平均周转时间” T 应该是:T=( T1 + T2 + + Tn ) / n,1.,先来先服务作业调度算法,基本思想:以作业进入后备作业队列的先后次序,作为作业调度程序挑选作业的依据。即哪个作业在后备作业队列里等待的时间最长,下次调度即是选中者,这当然是以其资源需求能够得到满足为前提的。,2.,短作业优先作业调度算法,基本思想:要求每个用户对自己作业所需耗费的CPU时间做出估计,填写在作业说明书里。作业调度程序工作时,总是从后备作业队列里挑所需CPU时间最少、且资源能够得到满足的作业进入内存投入运行。,3.,响应比高者优先作业调度算法,基本思想:在进行作业调度时,先计算每个作业当时的响应比:响应比 = ( 已等待时间 ) / ( 所需CPU时间 ) 然后从中挑选出响应比最高的作业作为调度的对象。,