操作系统处理机调度

一般来说,处理机调度最常用的是低级调度,也称为进程调度,进程调度的主要功能是根据某种算法,决定就绪队列中的哪个进程获得处理机。高级调度又称为作业调度,其主要功能是根据某种算法决定将外存上处于后备队列中哪几个作业调入内存,并为他们创建进程,分配必要的资源,并将他们放入就绪队列。

操作系统处理机调度_第1张图片

这里先不谈中级调度。

处理机的调度算法

1.先来先服务(FCFS)

这种算法不太复杂,既可以用于作业调度,也可用于低级调度。作业调度采用该算法的时候,系统按照作业到达的先后时间顺序进行调度,不管该作业所需执行的时间长短,从后备作业队列中选择最先进入该队列的作业,调入内存创建线程和分配资源。而进程调度采用FCFS算法的时候,从就绪的进程队列中选取最先进入该队列的进程为之分配处理机,使之投入运行。(说明:在单处理机系统很少采用才算法,一般来说会把他与其他调度算法使用相结合)。

2.短作业优先(SJF)

这里的短作业时间一般指的是执行时间(服务时间)也可以指的是剩余时间。在作业调度使用该算法的时候,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将他们调入内存运行。

3.轮转调度算法(RR)

这个算法的特点采取了非常公平的分配方式,即让就绪队列上的每个进程每次晋级运行一个时间片。如果就绪队列上有n个进程,则每个进程每次大约都可以获得1/n的处理时间。

在RR算法中,时间片的大小对系统的性能有很大的影响。如果时间片很小的话,系统频繁的执行进程调度和进程上下文的切换,会增加系统的开销。如果时间片选取过大的话,改算法会退化为FCFS,即有可能会出现饥饿现象。

4.高响应比优先调度(HRRN)。

基本原理是引入动态优先级。加入某个线程等待时间越长,他的优先级也会增加,也会得到处理机,这样就会得到一个折中的状态。

计算优先级的方法是:优先权=(要求服务时间+等待时间)/要求服务时间 =(完成时间-到达时间)/运行时间

我们不难得到,如果作业的等待时间相同,则要求的服务时间越短,优先权越高,类似于SJF,

如果要服务时间相同,作业的优先权取决于其等待时间,类似于FCFS。

 

下面我们看个经典的例子:

操作系统处理机调度_第2张图片

操作系统处理机调度_第3张图片



答案如下:

操作系统处理机调度_第4张图片

你可能感兴趣的:(OS,算法)