第三章 处理机调度与死锁
3.1.1 处理机调度的层次
1.高级调度
调度对象为作业,周期较长,运行频率低,又称为长程调度,主要用于批处理系统。
2.低级调度
调度对象为进程,运行频率高,在批处理系统和分时系统还有实时系统中都有应用。
3.中级调度
目的是提高内存利用率和系统吞吐量,将暂时不能运行的进程调至外存等待,将满足运行条件的进程调入内存。
3.1.2 作业和作业调度
1.作业
作业包含了程序和数据以及一份“作业说明书”,包含了对程序的运行进行控制。
2.作业控制块
每个作业具有一个作业控制块(job control block),保存了系统对作业进行管理和调度的所有信息。
“新作业”会通过“作业注册”程序为作业建立一个JCB,放到相应类型的作业后备队列中等待调度。
作业运行期间系统根据作业“说明书”和JCB中的信息对作业进行控制。
作业执行结束并进入到完成状态,系统会回收分配给它的资源,并撤销JCB。
3.作业调度的任务
1.接纳多少个作业
选取多少作业调入内存,取决于“多道程序度”,表示允许多少个作业同时在内存中运行。
“多道程序度”取决于计算机系统规模,计算机运行速度,作业大小以及能获得的系统性能好坏等。
2.接纳哪些作业
选择后备队列中的哪些作业调入内存,取决于调度算法。
1.FCFS 2.SJF 3.PSA 4.HRRN
3.1.3 进程调度
1.进程调度任务
1.保存CPU现场信息
2.按某种算法选取进程
3.把CPU分配给进程
2.进程调度机制
(1)排队器
当进程转变为就绪状态时,将它插入到相应的就绪队列。
(2)分派器
将调度程序所选定的就绪进程取出,然后进行分配器和新选定的进程的上下文切换,将CPU分配给新进程。
(3)上下文切换器
处理机切换时,会发生两对上下文的切换操作
1.OS保存当前进程的上下文,把当前CPU寄存器中的内容保存到进程的PCB单元,装入分派程序的上下文。
2.移出分派程序的上下文,将新选定的进程的CPU现场信息装入CPU的各个相应寄存器中。
3.进程调度方式
(1)非抢占调度方式
一旦把处理器分配给某进程,就会一直运行,知道完成或阻塞,才会将该处理机分配给其他进程。
优点 :简单,系统开销小,适用于大多数批处理系统。
(2)抢占调度方式
根据某种原则暂停某个正在执行的进程,将处理机分配给另一个进程。抢占方式比较复杂,所需开销较大。
3.1.4 处理机调度算法的目标
1.处理机调度算法的共同目标
(1)资源利用率
CPU利用率 = (CPU的有效工作时间)/ (CPU的有效工作时间 + CPU的空闲等待时间);
(2)公平性
使各个进程获得合理的CPU时间,防止进程出现“饥饿”现象。
(3)平衡性
不同类型的作业使得CPU和I/O设备能够经常处于忙碌状态,要确保系统资源使用的平衡性。
(4)策略强制执行
2.批处理系统中处理机调度算法的目标
(1)平均周转时间短
(2)系统吞吐量高
吞吐量 :单位时间内系统所完成的作业数。
(3)处理机利用率高
3.分时系统中处理机调度算法的目标
(1)保证响应时间快
(2)保证均衡性
4.实时系统中处理机调度算法的目标
(1)保证满足截至时间的要求
(2)保证可预测性
3.2.1 FCFS
每次调度都是从就绪队列中选择一个最先进入该队列的进程,并为之分配处理机,使之投入运行。
3.2.2 SJF
作业越短,优先级越高。
缺点 :(1)必须预先知道作业的运行时间。
(2)对长作业非常不利,长作业的周转时间会明显增长。完全忽视作业的等待时间,进而出现饥饿现象。
(3)无法实现人机交互。
(4)完全没有考虑作业的紧迫程度,故不能保证紧迫性作业得到及时处理。
3.2.3 PSA
用于作业调度:系统将从后备队列中选取优先级最高的作业装入内存中;
用于进程调度 :系统将从就绪队列中选取优先级最高的进程在CPU中运行。
(1)优先级类型
1.静态优先级
在创建进程时确定的,在进程的整个运行期间保持不变。
2.动态优先级
在创建进程初期赋予一个优先级,然后优先级会随着进程的推进或等待时间的增加而改变。
(2)高响应比优先调度算法
考虑了作业的等待时间,又考虑了作业的运行时间。
优先级 = (等待时间 + 要求服务时间)/(要求服务时间)= (响应时间)/(要求服务时间);
3.2.4 RR
基于时间片的轮转调度算法。在确定的时间段内,都能获得一个时间片的处理机时间。
(1)时间片未用完进程已完成
立即激活调度程序,将进程从就绪队列中删除,调度新的进程运行,启用新的时间片。
(2)时间片用完进程未完成
调度程序将此进程送往就绪队列的末尾。
3.2.5 多级队列调度算法
将就绪队列拆分为一个或多个,设置不同的调度算法。