3.1调度的层次
一个作业从提交开始直到完成,姚经理以下三级调度。
1.作业调度(高级调度):内存与辅存之间的调度,每个作业只调入一次、调出一次。从外存后备作业队列中挑选一个或多个作业为其分配必要资源,并建立进程使其有竞争处理机的权利。该调度一般配置在多道批处理中。调度次数较少。
2.中级调度(内存调度):提高内存利用率和系统吞吐量。将暂时不能运行的进程调至外存等待(挂起)。在内存有空时,可以把外存中的具备运行条件的进程重新调入内存,并将其状态调为就绪放入就绪队列。调度次数略多。(虽然也是内存和外存之间,但是要注意区分它和作业调度,后者调度是才分配资源建立进程~)
3.进程调度(低级调度):从就绪队列选一个进程,为其分配处理机,改为运行态。调度次数最多。
请求调度的事件发生后,才会进行进程调度。以下情况不会立即进行调度,而是置系统的请求调度标志,直到情况中的过程结束才可以调度和切换。
1)处理中断时
2)进程在操作系统内核程序临界区中(注意不是普通的比如打印机那种慢速外设~)。
3)原子操作过程(连中断都要屏蔽掉,更何况调度切换这些操作呢?~)
3.2进程调度方式
什么叫做进程调度方式???
答:某个进程正在处理机上时,若有优先级更高的进程到就绪队列,这时候执行的处理机分配方式。
1.非抢占方式:即使是优先级更高的进程来到就绪队列,也仍然让正在执行的进程继续执行直到其终止或阻塞。
优点:实现简单,系统开销小。
缺点:不能用于大多数分时系统和实时系统。
2.抢占方式:立即停止当前执行的进程,把处理机分配给新到就绪队列中且优先级更高的进程。(但这个剥夺也是有一定原则的,在下面的调度算法中会进一步讲解)
优点:提高系统吞吐率和响应效率。
3.3调度的基本准则——可以出计算题
1.CPU利用率
2.系统吞吐量
3.周转时间、带权周转时间、平均周转时间、平均带权周转时间。
4.等待时间
5.响应时间
3.4典型的调度算法
掌握这些算法时,不仅要掌握思想,还要掌握3,3中提到那几个基本准则的计算。
1.FCFS:可用于作业调度和进程调度,总是选最先进入后备队列的作业进行分配资源创建进程并加入到就绪队列,选最先进入绪队列中的进程占用处理机直到其结束或阻塞。
优点:算法最简单。
缺点:效率低;不能用于分时和实时;利于长作业,不利于短作业;利于CPU繁忙型作业,不利于IO繁忙型作业。另外,FCFS+优先级抢先用于实时系统。
2.SJF:从后备队列中选中估计运行时间最短的作业进行分配资源创建进程并到就绪队列,选就绪队列中估计运行时间最短的进程分配处理机直到其结束或阻塞(这里考考虑的是非抢占式SJF)。
优点:平均等待时间和平均时间最少,系统吞吐量大。
缺点:长作业可能长时间不能调度,导致饿死(不是死锁!)。未考虑作业的紧迫程度。
思考:
做题的时候,如果题干没有指出SJF是抢占还是非抢占,该如何解题呢?默认抢占式吗?
抢占式的SJF是怎样的呢?
关键在于进行调度的时候,一定要清楚就绪队列中有哪些进程以及其剩余时间分别是多少,选剩余时间最短的进程运行。
缺点:下一个CPU周期的长度无法精确获得,只能用预测的方法。
3.优先级调度算法:可用于作业调度/进程调度,可以描述作业运行的紧迫程度。根据新的更高优先级能否抢占正在执行的进程,调度算法可分为:非抢占式优先级调度算法、抢占式优先级调度算法。
进程优先级要分为以下两种:
静态优先级:创建进程时确定的,并且之后保持不变。
动态优先级:在运行过程中,根据进程情况的变化调整优先级。
那么进程优先级如何设置呢?
1)系统进程>用户进程
2)交互进程>非交互进程( 前台进程>后台进程)
3)IO型进程>计算型进程。频繁使用I/O设备的进程>频繁使用CPU的进程。
思考:
解题的时候,优先级相同的进程根据什么标准去优先选择呢?
优先级的值是一个常数,数字越大,优先级越低吗,也就是数值代表的是优先级排名吗???
4.高响应比优先调度算法:主要用于作业调度,系统确定作业全部到达后备队列中,再开始该调度。计算出队列中所有作业的响应比,选高者。是非抢占式的。
等待时间=最后一个作业的提交时间-该作业到达的时刻
响应比=(等待时间+要求服务时间)/要求服务时间。
特点:等待时间相同时,有利于短作业,即SJF;要求服务时间相同时,遵循FCFS;对于长作业,响应比可以根据其等待时间增加而提高从而获得处理机避免饥饿。
优点: 兼顾长短作业。
缺点:计算响应比的开销大。
5.时间片轮转调度算法:主要用于分时系统,选择就绪队列中最先到达的进程分配处理机即FCFS。但是选中的进程只能运行一个时间片,如果一个时间片结束但进程还未结束,那么进程也要释放处理机,并且该进程回到就绪队列的末尾。
优点:兼顾长短作业
缺点:平均等待时间较长,切上下文切换浪费时间。
思考:
时间片过长过短都会引来问题。如何确定时间片的长短呢?
答:根据系统的响应时间、就绪队列中的进程数目和系统的处理能力综合确定。
6.多级反馈队列调度算法:融合了前几种算法的优点
1)设置多个就绪队列,第一级队列优先级队列最高,第二级次之,其余队列逐次降低。
2)队列时间片不等,优先级队列越高的队列,时间片越小。
3)新进程进入内存后,首先将其放到第一级队列末尾,遵循FCFS,轮到它调度时,如果在对应时间片内无法完成,再将其加入到第二级队列末尾,遵循FCFS,如果还不能完成,就逐级递减放置。
4)仅当第1~(i-1)级队列为空,程序调度才会从第i级队列开始调度。在调度第 i 级队列时候,如果第更高级别(1~i-1)的队列中加入了新的进程,那么该进程将抢占正在执行的处理机,把正在运行的进程加到其原所在队列的末尾。
思考:
你了解各个算法的优缺点吗?请绘制表格表述。(p70)
你会使用甘特图解题吗?