目录
2.2.1调度的概念
2.2.2进程调度的方式
2.2.3调度的评价指标
2.2.4典型的调度算法✳
【习题】:
(1)基本概念
在多道程序系统中,进程只有通过处理机调度后才能获得处理机而执行,所以如何如何将处理机分配给进程是操作系统的核心问题。
处理机调度是依据某种调度算法从就绪队列中选择一个进程获得处理机的过程。既是多道程序操作系统的基础也是操作系统设计的核心。
(2)三级调度
不同操作系统可能需要调度的级别不一样,但通常情况,一个作业从提交到完成,需要经历三级调度:
①高级调度(作业调度)。根据某特定算法从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。再将新创建的进程插人就绪队列,以使它们获得竞争处理机的权力。简单地说,高级调度就是内存与铺存之间的调度,要求一个作业只调入一次、 调出一次。在多道批处理系统中,大部分作业都要经历作业调度、而其他系统中通常不需要设置作业调度。作业调度的执行频率较低,一般一次作业调度耗时几分钟。
②中级调度(内存调度)。引人中级调度是为了提高内在利用率和系统吞吐量。即系统把内存中暂时阻塞的进程调到外存等待,同时把该进程的状态改为挂起状态。当该进程具备运行条件且内存又有空闲时,中级调度根据某种调度算法将外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
③低级调度(进程调度)。其主要功能是按照某种算法选取就绪队列中一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,执行频率高,一次进程调度仅需几十毫秒,在多道处理、分时、实时操作系统中,都须配置这一调度。
【三级调度的比较】:
(3)调度的时机及切换过程
进程调度和切换程序都是操作系统内核程序。当请求调度的事件发生后,方向方可运行进程调度程序,当新的就绪进程被调度后,进程间的切换才可以行。进程切换往往在调度完成后立刻发生,它要求保存原进程当前切换点的现场信息,恢复被调度进程的现场信息。现场切换时,操作系统内核将原进程的现场信息推人到当前进程的内核堆栈来保存它们,并更新堆栈指针。内核完成从新进程的内核栈中装人新进程的现场信息、更新当前运行进程空间指针、重设PC寄存器等相关工作之后,开始运行新的进程。
而在操作系统实际的设计中,当系统内核程序运行时,在某时发生了引起进程调度的因素,并不一定会马上进行调度与切换的情况:
①在处理中断的过程中:中断处理过程复杂,在实现上很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源。
②进程在操作系统内核程序临界区中:进人临界区后,需要独占式地访同共享数据,理论上必须加锁,以防止其他并行程序进人,在解锁前不应切换到其他进程运行,以加快该共享数据的释放。
③其他需要完全屏蔽中断的原子操作:如加锁、解锁、中断现场保护、恢复等原子操作。在原子操作过程中,所有的中断都要屏蔽,当然进程调度与切换也不能运行。
如果在上述过程中发生了引起调度的条件,应置系统的请求调度标志,直到上述过程结束后才进行相应的调度与切换。
现代操作系统中,应该进行进程调度与切换的情况如下:
①当发生引起调度条件,当前进程无法继续运行下去时,可以马上进行调度与切换。如果操作系统只在这种情况下进行进程调度,就是非剥夺式调度。
②当中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换。如果操作系统支持这种情况下的运行调度程序,就实现了剥夺方式的调度。
【真题】:
1.[2012统考真题]若某单处理器多进程系统中有多个就绪态进程,则下列关于处理机调度的叙述中,错误的是( ).C
A.在进程结束时能进行处理机调度
B.创建新进程后能进行处理机调度
C.在进程处于临界区时不能进行处理机调度
D.在系统调用究咸并返回用户态时能进行处理机调度
当前运行进程主动放弃处理机:进程正常终止,运行过程发生堵塞,进程主动请求堵塞(等待I/O)
当前运行进程被动放弃处理机:分配给进程的时间片用完了 ,有更紧急的事需要处理(如I/O中断),有更高优先级的进程进入就绪队列
在处理中断的过程:中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程进行进程切换
进程在操作系统内核程序临界区中
在原子操作过程中(原语):原子操作不可中断,要一气呵成(如修改pcb中的进程状态,并把PCB放到相应的队列)
·进程处于临界区时,进程正在占用处理机,只要不破坏临界资源的使用规则就不会影响处理机的调度
(1)非剥夺调度
当一个进程正在处理机上运行时,即使有优先级更高的进程进入就绪队列,当前进程不会把处理机分配给新进的进程而继续执行,直到该进程完成或等待某种事件发生而进人阻塞状态时,才把处理机分配给优先级高的进程。
优点是实现简单、系统开销小适用于大多数的批处理系统。但它不能用于过时系统和大多数的实时系统。
(2)剥夺调度
当某个进程在处理机上运行的过程中,若有优先级更高的进程进人就绪队列,则当前进程立即暂停正在运行的进程,将处理机分配给优先级高的进程。
优点在一定程度上可以提高系统吞吐率和响应效事,但“剥夺”不能随意执行,必须理循如优先权、短进程优先和时间片等原则。
(1)CPU利用率
CPU是操作系统最重要、最昂贵的资源,所以应尽可能使其保持忙状态,CPU利用率是评价调度算法优劣的重要指标。
(2)系统吞吐量
系统吞吐量表示单位时间内CPU完成作业的数量。作业的长短在一定程度上决定了系统吞吐量。因此根据作业的长短来选择不同的调度的算法,在定程度上也会对系统的吞吐量产生较大的影响
(3)周转时间
在系统中,对于每个作业的来说,完成作业所需要的时间是衡量系统性能的一个指标,一般用周转时间或带权周转时间来衡量。
①周转时间
周转时间是指从作业提交到作业完成所消耗的时间。包括作业等待、在就绪队列中排队在处理机上运行以及进行输人/输出操作等所花费时间的总和。
周转时间T=作业完成时间-作业提交时间
②平均周转时间
平均周转时间是指多个作业周转时间的平均值。
n个作业的平均周转时间T=(T1+T2+...+Tn)/n
③带权周转时间
带权周转时间是指作业周转时间与作业实际运行时间的比值。
作业的带权周转时间w=作业的周转时间T/实际运行时间Ts
④平均带权周转时间
平均带权周转时间是指多个作业带权周转时间的平均值。
平均带权周转时间W=(w1+w2+...+wn)/n
(4)等待时间
等待时间是指进程处于等待获取处理机状态的时间之和。处理机调度算法实际上并不影响作业执行或输人/输出操作的时间,只影响作业在就绪队列中等待所花的时间。因此,等待时间也是衡量一个调度算法优劣准则之一。
(5)响应时间
响应时间是指从用户提交作业请求到系统首次产生响应所用的时间。对于用户来说,调度策略应尽量降低响应时间,使响应时间处在用户能接受的范围之内。
(1)先来先服务FCFS
FCFS 调度算法是一种最简单的调度算法,它既可用于作业调度,又可用于进程调度。
在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中, FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。
特点:
①FCFS属于不可剥夺算法,算法简单,但效率低;
②对长作业比较有利,但对短作业不利(相对SPF和高响应比),若一个长作业先到达系统,就会使后面的许多短作业等待很长时间,因此它不能作为分时系统和实时系统的主要调度策略;
③有利于CPU繁忙型作业,而不利于I/0繁忙型作业。
(2)短作业优先SJF
短作业(进程)优先调度算法是指对短作业(进程)优先调度的算法。算法从就绪队列中选择一个或几个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。
特点:
①算法对长作业不利,SJF调度算法中长作业的周转时间会增加。如果有一个长作业进人系统的后备队列,由于调度程序总是优先调度短作业,将导致长作业长期不被调度,可能会出现“饥饿”现象。
②没有考虑作业 的紧迫程度,因而不能保证紧迫性作业会得到及时处理。
③作业的长短只是根据用户所提供的估计执行时间而定的,而用户有可能会有意或无意地缩短其作业的估计运行时间,算法不一定能真正做到短作业优先调度。
④SJF调度算法的平均等待时间、平均周转时间最少。
(3)高响应比优先
高响应比优先调度算法是对FCFS调度算法和SPF调度算法的一种综合平衡,同时考虑了每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比=(等待时间+要求服务时间)/要求服务时间
特点:
①作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业。
②要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,所以算法实现的又 是先来先服务。
③对于长作业,作业的响应比可以随等待时间的增加而提高,等待时间足够长时,其响应比便可升到很高,也可获得处理机。因此,克服了饥饿状态,兼顾了长作业。
(4)优先级调度
在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。
根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为如下两种:
①非剥夺式优先级调度算法。当一个进程正在处理机上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到任务完成或等待事件而主动让出处理机时,才把处理机分配给更为重要或紧迫的进程。
②剥夺式优先级调度算法。当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。
而根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:
①静态优先级。优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
②动态优先级。在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据有进程占有CPU 时间的长短、就绪进程等待CPU 时间的长短。
进程优先级的设置可以参照以下原则:
·系统进程>用户进程。系统进程作为系统的管理者,理应拥有更高的优先级。
·交互型进程>非交互型进程。大家平时在使用手机时,在前台运行的正在和你交互的进程应该更快速地响应你,因此自然需要被优先处理,即要有更高的优先级。
·I/0 型进程>计算(CPU)型进程。我们知道, I/0 设备的处理速度要比CPU 慢得多,若将I/0 型进程的优先级设置得更高,就更有可能让I/0 设备尽早开始工作,进而提升系统的整体效率。
(5)时间片轮转
时间片轮转调度算法主要适用于分时系统。在这种算法中,进程调度程序总是按到达时间的先后次序选择就绪队列中的第一个进程执行,即先来先服务的原则,但仅运行一个时间片。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。
特点:
①若时间片足够大,以至所有进程均能在一个时间片执行完成,则退化为FCFS算法。
②若时间片很小,则处理机切换频繁,开销增大,进程使用时间减少。
(6)多级反馈队列
多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合与发展,通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。例如,为提高系统吞吐量和缩短平均周转时间而照顾短进程;为获得较好的I/0 设备利用率和缩短响应时间而照顾I/0 型进程;同时,也不必事先估计进程的执行时间。
特点:
①终端型作业用户,短作业居多,所以短作业优先,交互性好。
②短批处理作业用户,作业基本在第一队列规定时间片完成,周转时间短。
③长批处理作业用户,对于长作业采用时间片轮转,用户最终得到全部处理。
1.有以下的进程需要调度执行(见下表):
1)若用非抢占式短进程优先调度算法,问这5个进程的平均周转时间是多少?
2)若采用抢占式短进程优先调度算法,问这5个进程名到达时间送行时间进程的平均周转时间是多少?
A. 8.62; 6.34 B.8.62; 6.8
C.10.62; 6.34 D.10.62; 6.8
2.[2012统考真题] 一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它的计算和I/O操作顺序如下:
P1:计算60ms,I/O 80ms,计算20ms
P2:计算120ms, I/O 40ms,计算40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是( )。B
A.240ms B.260ms C.340ms D.360ms
3.[2016统考真题]某单CPU系统中有输入和输出设备各1台,现有3个并发执行的作业,每个作业的输入,计算和输出时间均分别为2ms, 3ms和4ms,且都按输入、计算和输出的顺序执行,则执行究3个作业需要的时间最少是( )。B
A.15ms B.17ms C.22ms D.27ms
4.[2017统考真题]下列有关基于时间片的进程调度的叙述中,错误的是( )。B
A.时间片越短,进程切换的次数越多,系统开销越大
B.当前进程的时间片用完后,该进程状态由执行态变为阻塞态
C.时钟中断发生后,系统会修改当前进程在时间片内的剩余时间
D.影响时间片大小的主要因素包括响应时间、系统开销和进程数量等完
·当前进程时间片用完之后,若进程未完成运行则返回就绪队列的末尾重新排队,进程状态由运行态变为就绪态、
5.[2018统考真题]某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为lμs.在T时刻就绪队列中有3个进程P、P和P3,其在就堵队列中的等待时间、需要的CPU时间和优先权如下表所示。若优先权值大的进程优先获得CPU,从T时刻起系统开始进程调度,则系统的平均周转时间为( )。D
A.54μs B. 73μs C.74μs D.75μs
·根据优先权值进行调度,则P2进程开始运行。P2周转时间=15+1+24=40μs;接下来运行P3进程,P3的周转时间=18+1+36+1+24=80μs;最后P1的周转时间=30+1+12+1+24+1+36=105μs,所以平均周转时间=(40+80+105)/3=75μs.
6.[2019统考真题]系统采用二级反馈队列调度算法进行进程调度.就绪队列Q1采用时间片轮转调度算法,时间片为10ms;就绪队列Q2采用短进程优先调度算法;系统优先调度Q1队列中的进程,当Q1为空时系统才会调度Q2,中的进程;新创建的进程首先进入Q1,Q1中的进程执行一个时间片后,若未结束,则转入Q2.若当前Q1, Q2为空,系统依次创建进程P1 P2后即开始进程调度, P1, P2需要的CPU时间分别为30ms和20ms.则进程P1, P2在系统中的平均等待时间为( ).C
A.25ms B.20ms C.15ms D、10ms
7.[2020统考真题]下列与进程调度有关的因素中,在设计多级反馈队列调度算法需要考虑的是( ).ABCD
A就绪队列的数量 B.就绪队列的优先级 C各就绪队列的调度算法 D.进程在就绪队列间的迁移条件
·多级反馈队列调度算法需要综合考虑优先级数量、优先级之间的转换规则等,就绪队列的数量会影响长进程的最终完成时间,A正确;就绪队列的优先级会影响进程执行的顺序,B正确;各就绪队列的调度算法会影响各队列中进程的调度顺序, C正确;进程在就绪队列中的迁移条件会影响各进程在各队列中的执行时间,D正确。
8.[2021统考真题]在下列内核的数据结构或程序中,分时系统实现时间片轮转调度需要使用的是( ).ABC
A.进程控制块 B.时钟中断处理程序 C.进程就绪队列 D.进程阻塞队列
·在分时系统的时间片轮转调度中,当系统检测到时钟中断时,会引出时钟中断处理程序,调度程序从就绪队列中选择一个进程为其分配时间片,并且修改该进程的进程控制块中的进程信息,同时将时间片用完的进程放入就绪队列或让其结束运行。ABC正确。阻塞队对中的进程只有被唤醒并进入就绪队列后,才能参与调度,所以该调度过程不使用阻塞队列。
9.[2021统考真题]下列事件中,可能引起进程调度程序执行的是( )。ABCD
A.中断处理结束 B. 进程阻塞 C.进程执行结束 D. 进程的时间片用完
·在时间片调度算法中,中断处理结束后,系统检测当前进程的时间片是否用完,如果用完就将其设为就绪态或让其结束运行,若就绪队列不空,则调度就绪队列的队首进程执行,A可能;当前进程阻塞时,将其放入阻塞队列,若就绪队列不空,则调度新进程执行,B 可能。进程结束会导致当前进程释放CPU,并从就绪队列中选择一一个进程获得 CPU,C可能。进程时间片用完,会导致当前进程让出CPU,同时选择就绪队列的队首进程获得CPU, D 可能。