在操作系统中存在多种调度算法。调度算法就是根据系统的资源所规定的一种资源分配策略。有的调度算法适用于进程调度,有的调度算法适用于作业调度,有的调度算法两种都适合。对于不同的目标,通常会采取不同的调度算法。
1.先来先服务调度算法(FCFS)
FCFS是一种最简单的调度算法,顾名思义,哪个进程先来就会先处理,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
看起来FCFS是一种公平的调度算法。但是如果是一个长进程先到达系统,就会让后面的很多短进程等待很长的时间,所以这样就不是很友好。但是它常会与其他的调度策略结合起来一起使用。例如优先级队列先来先服务算法,但是当优先级一样时,上述的问题还是会有。
FCFS调度算法的特点就是简单,容易实现。对长进程友好,对短进程不是很友好。
2.短作业优先调度算法(SJF)
短作业优先调度算法就是对短作业优先调度的算法。算法会从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给他,使之运行。直到完成或发生某件事情阻塞时,才释放处理机。
这样看来短作业优先调度算法就不是很公平了。除了公平方面,短作业优先算法有不可忽视的缺陷:
- 该算法对长作业非常的不利。在FCFS中如果长作业在后备队列中,其后的短作业无非是等待时间会长一点,但是在短作业优先中,如果一个长作业在后背队列中&#