1. 调度算法
First Come First Service (FIFO)
- 如果进程在执行中阻塞,那么在队列中的下一个进程会得到 CPU
- 举例来说,如果现在有三个进程,p1, p2, p3,假设我们事先知道它们的执行时间是 12, 3, 3。按照 FIFO算法:
- 如果它们以 p1, p2, p3 的顺序到达,那么它们的执行顺序就是 p1, p2, p3,整个的平均周转时间 = (12 + (12 + 3) + (12 + 3 + 3)) / 3 = 15;
- 如果它们以 p2, p3, p1 的顺序到达,那么它们的执行顺序就是 p2, p3, p1,整个的平均周转时间 =(3 + (3 + 3) + (3 + 3 + 12)) / 3 = 9;
- 周转时间 = 等待时间+执行时间
- 优点:简单
- 缺点:平均等待时间波动较大;花费时间少的任务可能排在花费时间长的任务后面;
短任务优先
-
按照预测的完成时间将任务入队列
-
可以是抢占式和非抢占式:假设当前执行时间最短的进程正在执行的时候,来了一个执行时间更短的进程,那么就有两种处理方式:
- 当前执行的进程继续执行,进来的更短的进程排入就绪队列的最前面,也就是非抢占式
- 如果当前执行的进程的剩余时间大于新进的进程,那么当前进程将会从运行态进入就绪态,