Scheduling-algorithms

描述

调度算法:对现有的资源进行分配,使CPU的利用率最大化

分类

  • FCFS(先来先服务)
  • SJF(最短作业优先)
  • PS(优先权调度)
  • RRS(轮转调度)
  • MQS(多级队列调度)

FCFS

先到先服务即先请求CPU的进程先分配到CPU,类似于FIFO队列.

Process Burst Time
P1 24
P2 3
P3 3

对应的Gantt chart为:

P1 P2 P3
24 27 30

SJF

最短作业优先调度算法将每个进程与其下一个CPU区间段相关联.当CPU为空时,它会赋给具有最短CPU区间的进程.如果两个进程具有相同的长度,那么可以使用FCFS调度来处理.

就绪队列无新进程到达

当就绪队列无新值到达时,按正常的程序执行.

Process Burst Time
P1 6
P2 8
P3 7
P4 3

对应的Gantt chart为:

P4 P1 P3 P2
3 9 16 24

就绪队列有新进程到达

SJF可以是抢占式或非抢占的,当一个新进程到达就绪队列而以前的进程正在执行时,就需要进行判断.与当前进程相比,新的进程比当前进程有更短的CPU区间,抢占SJF算法可抢占当前运行的进程,运行新的进程,而非抢占SJF算法会允许当前运行的进程先完成其CPU区间,然后在进行新的判断.

Process Arrival Time Burst Time
P1 0 6
P2 1 8
P3 2 7
P4 3 3

对应Gantt chart为:

P1 P2 P4 P1 P3
1 5 10 17 26

PS

每个进程都有一个优先级与其关联,具有最高优先级的进程会分配到CPU.具有相同优先级的进程按FCFS顺序调度.一般是数越小优先级越小(不完全是,根据系统而定).

Process Burst Time Priority
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2

对应的Gantt chart为:

P2 P5 P1 P3 P4
1 6 16 18 19

RRS

RRS是专门为分时系统设计的.用RRS调度时,队列中没有进程被分配超过一个时间片(quantum)的CPU时间(除非它是唯一可运行的进程).如果进程的CPU区间超过一个时间片,那么该进程会被抢占,而被放回到就绪队列中.

设 quantum=4(ms)

Process Burst Time
P1 24
P2 3
P3 3

对应Gantt chart为:

P1 P2 P3 P1 P1 P1 P1 P1
4 7 10 14 18 22 26 30

MQS

多级队列调度(暂时没弄明白,待续)