目录

  • 1.先来先服务调度算法(FCFS)
  • 2.优先级调度算法
  • 3.最短作业优先调度算法(SJF)
  • 4.最高响应比优先调度算法(HRRN)
  • 5.轮转调度算法(RR)
  • 6.多级反馈轮转调度算法
  • 7.实时系统的调度算法



1.先来先服务调度算法(FCFS)

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02 先来先服务(First-Come-First-served)调度算法是最简单非抢占的调度算法。

java先来先服务算法实现 先来先服务算法原理_优先级_02 它通过管理一个FIFO就绪队列来实现,从前到后按顺序将CPU分配给进程。

java先来先服务算法实现 先来先服务算法原理_执行时间_04

java先来先服务算法实现 先来先服务算法原理_优先级_02

进程

执行时间

P1

30

P2

5

P3

2

所以执行顺序为 java先来先服务算法实现 先来先服务算法原理_java先来先服务算法实现_06 ,我们画出它的甘特图来形象的理解:

java先来先服务算法实现 先来先服务算法原理_调度算法_07


下面的时刻表示该进程占用CPU的执行时间。(后面的几种调度方法也使用甘特图来帮助理解。)

所以可以计算求得三个进程的平均等待时间为:
java先来先服务算法实现 先来先服务算法原理_调度算法_08

java先来先服务算法实现 先来先服务算法原理_执行时间_09

java先来先服务算法实现 先来先服务算法原理_优先级_02


2.优先级调度算法

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02 由用户或者系统按照某种原则给进程一个优先级,系统总是调度优先级最高的那个进程运行。

java先来先服务算法实现 先来先服务算法原理_优先级_02 优先级可以分为静态优先级动态优先级。静态优先级就是指优先级确定以后就不再改变,比如说按照它们的执行时间长短来确定等等;动态优先级会随着进程的不断执行而发生改变,比如说可以按照等待时间的长短划分优先级等等。

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_执行时间_04

java先来先服务算法实现 先来先服务算法原理_优先级_02

进程

执行时间

优先级

P1

9

5

P2

4

1

P3

2

3

P4

1

4

所以执行顺序为 java先来先服务算法实现 先来先服务算法原理_调度算法_17,我们画出它的甘特图如下:

java先来先服务算法实现 先来先服务算法原理_优先级_18


所以可以计算求得四个进程的平均等待时间为:

java先来先服务算法实现 先来先服务算法原理_优先级_19

java先来先服务算法实现 先来先服务算法原理_执行时间_09

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_优先级_02


3.最短作业优先调度算法(SJF)

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02 最短作业优先(Shortest-Job First)调度算法克服了FCFS的对短进程不利的缺点,它在就绪队列中选择处理时间最短的进程,如果时间相同则可以按照FCFS准则来处理。

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_执行时间_04

java先来先服务算法实现 先来先服务算法原理_优先级_02

进程

执行时间

P1

5

P2

4

P3

9

P4

3

所以执行顺序为 java先来先服务算法实现 先来先服务算法原理_优先级_29,我们画出它的甘特图如下:

java先来先服务算法实现 先来先服务算法原理_执行时间_30


所以可以计算求得三个进程的平均等待时间为:

java先来先服务算法实现 先来先服务算法原理_优先级_31

java先来先服务算法实现 先来先服务算法原理_优先级_02

进程

到达时间

执行时间

P1

0

8

P2

1

4

P3

2

9

P4

3

5

最初只有P1进程,那么执行P1进程;当时间1时P2到达,此时P1剩余执行时间为7,P2执行时间为4,那么执行P2进程;当时间2时,P3到达,此时最短执行时间仍然为P2;时间3时,P4到达,此时P2执行时间为2,P4也为2,所以先让P2执行完在让P4执行,然后再让P1执行,最后在让P3执行。

所以执行顺序为 KaTeX parse error: Expected 'EOF', got '}' at position 31: …{4}、P_{1}、P_{3}}̲>,我们画出它的甘特图如下:

java先来先服务算法实现 先来先服务算法原理_调度算法_33


所以可以计算求得三个进程的平均等待时间为:

java先来先服务算法实现 先来先服务算法原理_java先来先服务算法实现_34

分母上面的式子为每个进程开始执行的时间减去开始等待的时间之和。

java先来先服务算法实现 先来先服务算法原理_执行时间_09

java先来先服务算法实现 先来先服务算法原理_优先级_02


4.最高响应比优先调度算法(HRRN)

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02 最高响应比(Highest Response Ratio Next)调度算法集合了FCFS算法和非抢占SJF算法的优点,使用响应比R来表征,即:
java先来先服务算法实现 先来先服务算法原理_优先级_39

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_执行时间_04

java先来先服务算法实现 先来先服务算法原理_优先级_02

进程

到达时间

执行时间

P1

0

10

P2

1

1

P3

2

2

P4

3

1

P5

4

5

java先来先服务算法实现 先来先服务算法原理_优先级_02 0时刻P1运行,10时刻P1运行完毕,此时P2 ~ P5的响应比为:

java先来先服务算法实现 先来先服务算法原理_优先级_44

java先来先服务算法实现 先来先服务算法原理_执行时间_45

java先来先服务算法实现 先来先服务算法原理_优先级_02 所以P2运行,直到11时刻运行结束,此时P3 ~ P5的响应比为:

java先来先服务算法实现 先来先服务算法原理_执行时间_47

java先来先服务算法实现 先来先服务算法原理_优先级_02 所以P4运行,直到12时刻运行结束,此时P3 和 P5的响应比为:

java先来先服务算法实现 先来先服务算法原理_调度算法_49

java先来先服务算法实现 先来先服务算法原理_优先级_02 所以先执行P3,后执行P5

java先来先服务算法实现 先来先服务算法原理_优先级_02 所以执行顺序为 KaTeX parse error: Expected 'EOF', got '}' at position 31: …{4}、P_{3}、P_{5}}̲>,我们画出它的甘特图如下:

java先来先服务算法实现 先来先服务算法原理_执行时间_52


所以可以计算求得五个进程的平均等待时间为:

java先来先服务算法实现 先来先服务算法原理_优先级_53


5.轮转调度算法(RR)

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02 轮转(Round Robin)调度算法是一种基于抢占的调度策略,在分时系统中,每个进程会被分配一个固定的时间片,就绪队列中的进程按顺序依此调度运行。

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_执行时间_04

java先来先服务算法实现 先来先服务算法原理_优先级_02

进程

执行时间

P1

24

P2

3

P3

3

这里时间片我们选择为4,按照原理可得甘特图如下:

java先来先服务算法实现 先来先服务算法原理_优先级_59


所以可以计算求得三个进程的平均等待时间为:

java先来先服务算法实现 先来先服务算法原理_执行时间_60


6.多级反馈轮转调度算法

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02

java先来先服务算法实现 先来先服务算法原理_优先级_02


7.实时系统的调度算法

java先来先服务算法实现 先来先服务算法原理_执行时间

java先来先服务算法实现 先来先服务算法原理_优先级_02