一:先来先服务(first-come first-severd / FCFS)
所有调度算法中,最简单的就是非抢占式的先来先服务算法。
FCFS调度算法,使进程按照它们请求CPU的顺序使用CPU。在此算法中,一个单链表记录所有就绪进程。选择运行一个程序,该队列的头部移走一个进程;添加一个新进程或者阻塞一个进程,将该作业或进程连接在队列末尾。
| 优点 | 缺点 |
|
易于理解 便于在程序中运用 |
不利于短作业 不利于I/O繁忙型作业 |
二:最短作业优先(shortest job first / SJF)
使用于运行时间可以预知的非抢占式批处理调度算法。
左边是顺序占用CPU队列,右边为按照最短作业优先占用CPU的队。最短作业优先的调度算法可以减少平均周转时间,整体上每个程序的平均运行时间减少。但是对于长时间的作业来说,长作业可能永远也得不到执行。另外,只有在所有作业都可以运行的情况下,最短作业优先才是最优化的。
三:最短剩余时间优先(shortest remaining time next / SRTN)
最短剩余时间优先就是最短作业优先的抢占式版本。调度程序总是选择剩余运行时间最少的进程运行。
有关的运行时间必须提前掌握。当一个新的作业到达,整个运行时间和当前运行进程的剩余时间相比较,如果新作业的总时间比当前运行程序的剩余运行时间少,则选择运行新程序。
这种方式可以使新的短作业获得良好的服务。