3.1 一些基本概念:
一、处理机调度:
多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行。
ps:提高处理机的利用率、改善系统性能,很大程度上取决于处理机调度的性能。处理机调度便成为OS设计的中心问题之一。分配的任务由处理机调度程序完成。
二、作业进入系统驻留在外存的后备队列上,再至调入内存运行完毕,可能要经历下述三级调度:
(一)、高级调度(High Scheduling)
又称作业调度、长程调度(Long-Term Scheduling)或接纳调度(Admission Scheduling)
1.主要在早期批处理阶段,处理在外存上的作业。
2.决定外存后备队列中的哪些作业调入内存;
3.为它们创建进程、分配必要的资源;
4.将新创建的进程排在就绪队列上,准备执行。
* 管理的方面比较多。
5.在每次执行作业调度时,都须作出两个决定:
①.接纳多少作业——取决于多道程序度。应根据系统的规模和运行速度等情况综合考虑。
②.接纳哪些作业——取决于采用的调度算法。如先来先服务,短作业优先等
6.系统运行并不一定存在高级调度
①.批处理系统:作业进入系统后先驻留外存,故需要有作业调度。
②.分时系统:为及时响应,作业由终端直接送入内存,故不需作业调度。
③.实时系统中,通常也不需作业调度。
(二)、中级调度(Intermediate-Level Scheduling)
又称交换调度或中程调度(Medium-Term Scheduling)引入目的:提高内存利用率和系统吞吐量。根据条件将一些进程调出或再调入内存。
(三)、低级调度(Low Level Scheduling)
也称为进程调度、微观调度或短程调度(Short-Term Scheduling)。决定内存就绪队列中的哪个进程获得处理机,进行分配工作。是最基本的一种调度,在三种基本OS中都有。
1.进程调度方式:
①.非抢占方式(Non-preemptive Mode)
一旦处理机分配给某进程,该进程一直执行。决不允许其他进程抢占已分配运行进程的处理机。
②.抢占方式(Preemptive Mode)允许调度程序根据某种原则,暂停2.某个正在执行的进程,将处理机重新分配给另一进程。
2.调度程序的任务职能:调度和分派。
①.记录系统中所有进程的有关情况
②. 确定分配处理机的原则
③. 分配处理机给进程
④. 从进程收回处理机
三、进程调度方式比较:
四、三种调度的频率和复杂度
(一)、进程调度:运行频率最高,算法不能太复杂,以免占用太多的CPU时间。分时系统通常10~100ms便进行一次。
(二)、作业调度:一个作业运行完毕退出系统时即触发重新调度一个新作业入内存,周期较长,大约几分钟一次。因而也允许作业调度算法花费较多的时间。
(三)、中级调度:运行频率基本上介于上述两种调度之间。
五、调度队列模型
不论高级、中级或者低级调度,都涉及到进程队列,由此形成了三类调度队列模型。从这三种方式中体验调度的过程。
(一)、仅有进程调度的调度队列模型
(二)、具有高级和低级调度的调度队列模型
(三)、同时具有三级调度的调度队列模型
3.2 调度算法
一、调度实质
是一种资源分配。不同的系统和系统目标,通常采用不同的调度算法
二、先来先服务调度算法FCFS
一种最简单的调度算法,按先后顺序进行调度。既可用于作业调度,也可用于进程调度。
(一)、按照作业提交,或进程变为就绪状态的先后次序分派CPU;
(二)、新作业只有当当前作业或进程执行完或阻塞才获得CPU运行
(三)、被唤醒的作业或进程不立即恢复执行,通常等到当前作业或进程出让CPU。(所以,默认即是非抢占方式)