摘要:
1. FIFO:FCFS,先到先服务,前一个完事下一个开始
2. SFJ:Shortest Job First,同时到达的,占用时间最短的任务先开始
3. STCF:抢占模式中,加入SFJ,在新任务到达后,调度器会根据所有任务的剩余时间决定先调度哪个任务
4. Round-Robin: 轮询,每个任务执行固定时间片,响应时间短,周转时间长
5. 合并I/O:允许重叠,在任务I/O时,使用STCF
在谈调度策略前,我们先做一些假设。
1. 每个任务都运行相同的时间
2. 所有任务到达的时间都是一样的
3. 一旦运行了,任务就会运行到完成。
4. 所有的任务只占用cpu资源
5. 任务的运行时间是已知的
这里的大部分假设都是不切合实际的,但是这个假设帮助我们更好的去理解和描述调度器。
我们定义周转时间为完成时间减去任务到达时间。
Tturnaround = Tcompletion - Tarrival
FIFO
最基本的调度算法就是先进先出FIFO模式,有时也被缩写成FCFS(先到先服务)。FIFO有一些优点:
非常简单所以容易实现。
假设所有的任务 A,B,C都大概同时到达系统,(Tarrival = 0),具体时间A早于B,B早于C。假设每个任务都工作10秒,那么平均周转时间为(10+20+30)/3 = 20秒。
接下来我们去掉假设1,A运行100秒,B和C都是10秒。那么平均周转时间为(100+110+120)/3 = 110秒,