1.CPU调度的概念
CPU调度是指按照一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程。
如果没有就绪进程,系统会安排一个系统空闲进程或者idle进程上CPU运行。
2.衡量调度算法的指标
吞吐量——单位时间完成的进程的数目。
周转时间——每个进程从提出请求到运行完成的时间。
响应时间——从提出请求到第一次回应的时间。
CPU利用率——CPU做有效工作的时间比例。
等待时间——每个进程在就绪队列中等待的时间。
3.批处理系统中采用的调度算法
(1)先来先服务(FCFS)
算法描述:进程按照就绪的先后顺序使用CPU。
这个算法的原则只有一个且非常直观——先到先得,在我们的生活中随处可见,比如在食堂排队打饭。下面是一个例子:
(2)短作业优先
算法描述:最有最短完成时间的作业最先执行。它是非抢占的,也就是说,在一个作业的执行过程中,如果到来了一个完成时间更短的作业,也不会打断正在执行的作业。
在所有进程同时可运行时,采用短作业优先调度算法可以得到最短的平均周转时间。下面是一个例子,这个例子假设作业P1, P2和P3同时到达,它们的执行分别需要24s, 3s, 3s。采用短作业优先调度算法有如下结果:
短作业优先调度算法有一个缺点,就是,如果有源源不断的短作业到来,可能是长的作业长时间得不到运行,产生“饥饿”现象。
(3)最短剩余时间优先
算法描述:抢占版本的短作业优先算法。也就是说,如果一个作业正在运行,这时来了一个需要的运行时间(现在,该作业的需要的运行时间也就是它需要运行的剩余时间)比正在运行的作业的剩余时间短的作业,这个刚来的作业会抢占CPU的使用权(只可能是后来的作业抢占正在运行的作业的CPU使用权)。
既然它也是短作业优先调度算法,自然也有可能产生“饥饿”现象的缺点。
(4)最高响应比优先
算法描述:响应比最高的作业最先执行。
下面是响应比的计算公式:
从公式可以看出,一个作业的等待时间越长,响应比越大;需要的处理时间越短,响应比也越大。
其实,这个算法就是同时考虑了先来先服务和短作业优先这两个算法用于衡量哪一个作业应该获得CPU使用权的因素,也就是等待时间和执行时间。先来先服务算法等于是说,等得越久的作业越早获得CPU的使用权,这很好理解,比如一系列作业都没有执行,自然先到的作业等得最久,它也先得到CPU的使用权。短作业优先算法,它的名字就告诉了我们它是通过一个作业需要的处理时间来判断该给哪个作业CPU使用权的,需要的处理时间越短,越早执行。
(本文的大部分内容整理自coursera上陈向群讲的操作系统原理课程,只有少量自己的解释)