目录
进程调度也称低级调度或短程调度,在多批道处理、分时和实时三种OS中都必须配置。
作业调度也称高级调度或长程调度,多用于多批道处理系统中。
在处理机调度时,我们运用不同的算法来实现更短时间或更优解的资源分配。(统称用进程调度来实现)
进程调度算法包括以下几类等:
1.先来先服务(FCFS)
2.短作业优先(SJF)
3.优先级调度(PSA)
4.时间片轮转(RR)
5.多级反馈队列(MFQ)
1.先来先服务(FCFS)
在进程调度中采用时,选择先进入就绪队列的进程,为之分配处理机并运行。该进程一直运行结束或发生阻塞后,在将处理机分配给下一个进程。在作业调度时也是这么运行,FCFS算法更利于长作业/进程和CPU繁忙的作业/进程。
现在FCFS算法很少作为主调度算法,但经常和其他调度算法结合使用。
2.短作业优先(SJF)
可以降低作业平均等待时间,吞吐量高。
作业越短,优先级越高。运用SJF算法时i,从外存作业中的后备队列中选择若干个估计运算时间最短的作业,优选调到内存中运行。
缺点:1必须预知作业的运行时间 2对长作业不利 3人机无法实现交互 4未考虑作业的紧迫程度
3.优先级调度(PSA)
基于作业的紧迫程度,从外部赋予作业/进程的优先级,按照优先级进行调度。可以保证紧迫性的作业优先运行。处理机分配给优先级最高的进程,此时PSA算法又分为两种:
1非抢占式优先级调度算法
直到该进程结束或发生什么事放弃处理机,系统重新分配另一个最高优先级进程
2抢占式优先级调度算法
在进程执行阶段,只要出现另一个比该运行中的进程优先级更高的进程,调度程序就将处理机分配给新的优先级最高的进程。通常用于对实时性要求较高的系统中。
高响应比优先调度(HRRN)
既考虑等待时间又考虑运行时间。
优先权=(等待时间+要求服务时间)/要求服务时间=1+等待时间/要求服务时间
由于等待时间与服务时间之和就是系统对该作业的响应时间,所以该优先级相当于响应比
=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间
4.时间片轮转(RR)
系统根据FCFS策略,将所有就绪进程排成一个就绪队列,设置每隔一定时间间隔产生中断,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程令其执行。一个时间片通常在1~100 ms之间。当正在运行的进程用完了时间片后,即使此进程还要运行,操作系统也不让它继续运行,而是从就绪队列依次选择下一个处于就绪态的进程执行,而被剥夺CPU使用的进程返回到就绪队列的末尾,等待再次被调度。当时间片耗尽或运行完毕系统再次将CPU分配给新的队首进程。保证就绪队列中所有进程在一个确切时间段内都能获得一次CPU执行。
时间片的大小可调整,如果时间片大到让一个进程足以完成其全部工作,这种算法就退化为FCFS调度算法;若时间片设置得很小,那么处理机在进程之间的进程上下文切换工作过于频繁,使得真正用于运行用户程序的时间减少。
5.多级反馈队列(MFQ)
设置多个就绪队列,每个队列的优先级逐渐降低,同时每个队列的执行时间也各不相同,优先级越高的队列,执行时间越短,优先级越低的队列,执行时间越长。
当一个进程进入内存后,首先进入第一个队列的末尾,按照FCFS算法进行调度,如果在第一个队列的执行时间内未执行完成,此时把此进程放入第二个队列的末尾,按照之前的方法进行执行,直到在某一个队列的队首执行完成。
当第一个队列全部执行完成,此时系统才会执行第二个队列,但是如果此时又有新的进程进入,此时执行完毕这个时间段,立刻把此进程分配给新的作业。
可以较好的满足各种类型用户的需求:终端型(交互性作业),短批处理作业,长批处理作业。