9.1处理器调度的类型
9.1.1长程调度
长程调度是用来决定加入待执行进程池,决定哪个程序可以进入系统中处理,因此它控制了系统的并发度。一旦允许进入,作业或用户程序就将成为进程,并添加到供短程调度程序使用的队列中,等待调度。
9.1.2中程调度
中程调度是交换功能的一部分,决定加入部分或全部位于内存中的进程集合。
9.1.3短程调度
短程调度决定处理器执行哪个可运行进程,执行的最为频繁。
导致当前进程阻塞或抢占当前运行进程的事件发生时,调用短程调度程序。这类事件包括:
时钟中断,I/O中断,操作系统调用,信号(如信号量)
9.1.4三者调度关系
9.2调度算法
9.2.1明确短程调度规则
9.2.1.1面向用户,与性能相关
周转时间:指一个进程从提交到完成之间的时间间隔,包括实际执行时间和等待资源(包括处理器资源)的时间。对批处理作业而言,这是一种很合适的测度。
响应时间:对一个交互进程来说,这指从提交一个请求到开始接受响应之间的时间间隔。通常情况下,进程在处理该请求的同时,会开始给用户产生一些输出。因此从用户的角度来看,相对于周转时间,这是一种更好的测度。该调度原则会试图实现较低的响应时间,并在可接受的响应时间范围内,使可交互的用户数量最大。
最后期限:在能指定进程完成的最后期限时,调度原则将降低其他目标,使得满足最后期限的作业数量的百分比最大。
9.2.1.2面向用户,其他
可预测性:无论系统的负载如何,一个给定作业运行的总时间量和总代价是相同的。用户不希望响应时间或周转时间的变化太大。这可能需要在系统作业负载大范围抖动时发出信号,或需要系统处理不稳定性。
9.2.1.3面向系统,与性能相关
吞吐量:调度策略应使得单位时间内完成的进程数量最大。这是对能执行多少作业的一种度量。它明显取决于一个进程的平均执行长度,也受调度策略的影响,因为调度策略会影响利用率。
处理器利用率:这是处理器处于忙状态的时间百分比。对昂贵的共享系统来说,这个规则很重要。在单用户系统和其他一些系统如实时系统中,该规则与其他规则相比不太重要。
9.2.1.4面向系统,其他
公平性:没有来自用户或其他系统的指导时,进程应被平等地对待,没有进程处于饥饿状态。
强制优先级:指定进程的优先级后,调度策略应优先选择高优先级的进程。
平衡资源:调度策略使系统中的所有资源都处于忙状态,优先调度较少使用紧缺资源的进程。该规则也适用于中程调度和长程调度。
9.2.3选择调度策略
明确三个参数:
w:目前为止在系统中停留的时间
e:目前为止花费的执行时间
s:进程所需的总服务时间,包括e。
各种调度策略的特点如下表:
其中FCFS(First Come First Served)也就是先来先服务算法,
SPN(Shorest Process Next)短进程优先算法
SRT(Shorest Remaing Time)最短剩余时间算法
HRRN:最高相应比优先算法
在介绍这些算法之前,了解决策模式(decision mode)
决策模式说明选择函数开始执行的瞬间的处理方式,通常分为两类:
1.非抢占:在这种情况下,一旦进程处于运行状态,就会不断执行直到终止,进程要么因为等待I/O,要么因为请求某些操作系统服务而阻塞自己。
2.强制:当前正运行进程可能被操作系统中断,并转换为就绪态。一个新进程到达时,或中断发生后把一个阻塞态进程置为就绪态,或出现周期性的时间中断时,需要进行抢占策略。
下面给出一个例子来方便理解各个算法:
9.2.3.1FCFS(先来先服务)
很好理解,就是谁先来给谁服务,后面来的依次排队即可。
9.2.3.2轮转
轮转是基于时钟的抢占策略。这种算法周期性的产生时钟中断,出现中断时,当前正运行的进程会放置到就绪队列中,然后基于FCFS策略选择下一个就绪作业运行,当时间片足够大时,就等同于FCFS策略。
9.2.3.3最短进程优先(SPN)
这也很好理解,就是选择就绪队列中占用CPU时间最小的进程优先服务,可以看到在B进程服务完后,先服务的E进程。
9.2.3.4最短剩余时间(SRT)
最短剩余时间是在SPN中增加了抢占机制的策略。
具体实现就是当一个新进程加入就绪队列时,与当前正运行的进程相比,它可能具有更短的剩余时间。因此,只要新进程就绪,调度程序就可抢占当前正在运行的进程。
如图中所示,当C进程加入就绪队列后,由于其剩余运行时间短于B,因此进程C抢占进程B运行,当进程C运行完时,就绪队列中有BDE进程,按照剩余时间来依次运行。
9.2.3.5最短响应时间比优先(HRRN)
考虑下面的比值:
调度规则如下:当前进程完成或被阻塞时,选择R值最大的就绪进程。