有问题可以在下面评论区讨论
1.为什么要调度?
在多道程序系统中,进程的数量往往多于处理机的个数,进程会竞争处理机资源。
2.调度目标?
提高系统吞吐量,降低响应时间,确保每个进程都能公平的获得处理机的机会。
3.进程调度时机?
a.正在运行的进程运行完毕或发生某事件而不能再继续运行
b.运行中的进程因提出I/O请求而暂停运行
c.在进程通信或同步过程中运行了某种原语操作,如P操作等。
d.在可抢占式调度中,有一个比当前进程优先级更高的进程进入就绪队列
e.在时间片轮转调度中,时间片用完。
4.调度方式有哪几种?
a.非抢占式方式
一旦处理机分配给某进程后,不管它要运行多长时间,都一直让它运行下去,绝不会因为时钟中断等原因而抢占正在运行进程的处理机。直到该进程完成,自愿释放处理机,或发生某事件而被阻塞时,才会把处理机分配给其他进程。
优点:实现简单,系统开销小,适用于大多数的批处理系统环境
b.抢占方式
允许调度程序根据某种原则去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
优点:可以防止一个长进程长时间占用处理机,能为大多数进程提供更公平的服务,特别是能满足对响应时间有着较严格要求的实时任务的需求。
5.典型调度算法
(1)先来先服务(FCFS)
FCFS是最简单的调度方法。其基本原则是按照进程进入就绪队列的先后顺序进行选择。 属于非抢占式方式
优缺点:FCFS已经很少用做主要的调度,尤其是不能在分时和实时系统中用作主要的调度算法。但它常被结合在其他的调度中使用。例如,在使用优先级作为调度的系统中,往往对许多具有相同优先级的进程使用FCFS原则。
特点:FCFS利于长作业和CPU繁忙型作业的调度,不利于短作业和I/O繁忙型作业的调度。(因为你去I/O了,那么你下次再等到处理机就不知道啥时候了。)
(2)短进程优先调度(SJ(P)F)
短进程优先调度算法是从进程的就绪队列中挑选出那些所需运行时间(估计时间)最短的进程运行。属于非抢占式方式。
由于该算法属于非抢占式的算法,所以不适合于分时系统,因为这不能保证对用户及时响应。
特点:
a.相对FCFS, SJF降低了作业的平均等待时间,提高了系统的吞吐量。
b.对长作业不利
c.作业运行时间由用户自身提供,错误的估算会影响真正的短作业的执行。
(3)时间片轮转
时间片轮转算法也多用于进程调度,采用此算法的系统其它进程就绪队列往往按进程到达的时间来排序,进程调度程序总是选择就绪队列中的第一个进程,也就是说,按照FCFS原则调度。但是进程占用处理机仅使用一个时间片,在使用完一个时间片后,进程还没有完成其运行,它也必须释放出(抢占式方式)处理机给下一个就绪的进程。被抢占的进程返回到就绪队列的末尾重新排队。
时间片轮转算法特别适合于分时系统使用,当多个进程驻留在主存时,在进程间转接处理机的开销一般是不大的。
时间片如何选择?
a.时间片很小: 处理机在进程间切换工作过于频繁,处理机开销变的很大。
b.时间片很大:达到一个进程足以完成其全部运行工作所需的时间时,那么该算法就退化成FCFS算法了。
c.时间片值应该选得大于大多数分时用于的询问时间(即当一个交互程序正在执行时,给他的时间片相对来说略大些,使他足以产生一个I/O请求,或者时间片的大小略大于大多数进程从计算到I/O请求之间的间隔时间)
(4)优先级调度
按照进程的优先级大小来调度,使高优先级进程优先得到处理机的调度称为优先级调度算法。进程优先级可以由操作系统按照一定原则赋予它等。
优先权算法又分为已下两种:
a.非抢占式优先权算法: 常见于批处理系统或实时性要求不高的实时系统。(我理解是的高优先级的进程被执行完成后才会从按照优先级排序的队列中取出具有最高优先级的那个进程,当然取出的这个进程的优先级可能会高于上一个获得处理机的进程。)。
b.抢占式优先权算法: 常用于严格实时系统或高性能批处理系统,分时os中。
优先权类型分为以下两种:
a.静态优先权:进程创建时确定且在进程生命周期中保持不变,这种方式实现简单,开销小但不精确,可能会产生低优先权进程饥饿。
b.动态优先权:进程创建时确定的优先数可能随进程发展或等待时间增加等因素而变化,确保了更优良的调度性能。
其他面试题
(5)多级反馈队列
设置多个就绪队列,并为各个队列赋予不同的优先级。
a.第一个队列优先级最高,时间片最短,随着优先权的降低,时间片增大,不同队列的时间片是不同的。
b.新进程进入内存后,按照FCFS原则放在第一个队列末尾等待调度,在其时间片内,若能完成任务就撤离系统,若不能就将其优先权降低一个档次,放入第二个队列的末尾等待调度。
c.如此循环,直到降入第n个(最后一个)队列后,便在该队列中以时间片轮转方式运行。
d. 在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。
特点: 多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成
(6)高响应比优先
针对于短进程优先调度算法的缺点提出的最高响应比优先调度算法。 这是一个非抢占式算法(不会抢占处理机,除非进程主动释放处理机)。
计算公式:
R = (Tw + Ts) / Ts = 1 + Tw / Ts
公式中:Tw为等待时间,Ts为预估的服务时间, R为响应比。
可以看出,“等待时间 + 请求服务时间(预估的服务时间)”就是系统对作业的响应时间。所以优先数公式中优先数组实际上也是响应时间与服务时间的比值,称为响应比。响应比 高者得到优先调度。
特点:
a.短作业优先(前提是等待时间相同)
b.先来先服务。 前提是预估服务时间相同。