前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统中进程调度算法详解及例题解释「建议收藏」

操作系统中进程调度算法详解及例题解释「建议收藏」

作者头像
全栈程序员站长
发布2022-11-10 19:18:54
8180
发布2022-11-10 19:18:54
举报

大家好,又见面了,我是你们的朋友全栈君。

文章目录

1. 先来先服务(FCFS,first come first serve)

1.1 算法思想

主要从“公平”的角度考虑

1.2 算法规则

按照作业/进程到达的先后顺序进行服务。

1.3 用于作业/进程调度

用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列

1.4 是否可抢占

非抢占式的算法

1.5 优缺点

  1. 优点:公平,算法实现简单
  2. 缺点:排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。即FCFS对长作业有利,对短作业不利。

1.6 是否会导致饥饿

不会

2. 短作业优先(SJF,shortest job first)

2.1 算法思想

追求最少的平均等待时间最少的平均周转时间,最少的平均带权周转时间

2.2 算法规则

最短的作业、进程优先得到服务(所谓“最短”,是指要求服务时间最短)

2.3 用于作业/进程调度

2种都可以。。 用于进程调度时被称为“短进程优先算法”(SPF,shortest process first)

2.4 是否可抢占

SJF和SPF是非抢占式算法,但也有抢占式的版本——最短剩余时间优先算法(SRTN,shortest remaining time next)

2.5 优缺点

  1. 优点:“最短的”平均等待时间,平均周转时间
  2. 缺点:不公平。对短作业有利,对长作业不利。可能产生饥饿现象。另外,作业/进程的运行时间是由用户提供的,并不一定真实,不一定能做到真正的短作业优先。

2.6 是否会导致饥饿

会,如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。如果一直得不到服务,则称为“饿死”。

3. 高响应比优先(HRRN)

3.1 算法思想

综合考虑作业/进程的等待时间和要求服务的时间

3.2 算法规则

在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务。

代码语言:javascript
复制
响应比 = (等待时间 + 要求服务时间) /  要求服务时间

3.3 用于作业/进程调度

都可以

3.4 是否可抢占

是非抢占式算法,因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比。

3.5 优缺点

  1. 综合考虑了等待时间和运行时间(要求服务时间)
  2. 等待时间相同是,要求服务时间短的优先(SJF的优点)
  3. 要求服务时间相同时,等待时间长的优先(FCFS的优点)
  4. 对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题。

3.6 是否会导致饥饿

不会

4. 时间片轮转(RR,round-robin)

4.1 算法思想

公平的,轮流地为各个进程服务,让每一个进程在一定时间间隔内都可以得到相应。

4.2 算法规则

按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队。

4.3 用于作业/进程调度

用于进程调度(只有作业放入内存建立了相应的进程后,才能被分配处理机时间片)

4.4 是否可抢占

可抢占式。若进程在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转调度算法属于抢占式的算法。由时钟装置发出时钟中断来通知CPU时间已到。

4.5 优缺点

  1. 优点:公平,响应快,适用于分时操作系统。
  2. 缺点:由于高频率的进程切换,因此有一定开销;不区分任务的紧急程度。

4.6 是否会导致饥饿

不会。

5. 优先级调度

5.1 算法思想

随着计算机的发展,特别是实时操作系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序。

5.2 算法规则

每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程

5.3 用于作业/进程调度

都可以。甚至,还会用于I/O调度中。

5.4 是否可抢占

抢占/非抢占都有。区别在于非抢占式只需在进程主动放弃处理机时进行调度即可,而抢占式还需在就绪队列变化时,检查是否会发生抢占。

5.5 优缺点

  1. 用优先级区分紧急程度,重要程度,适用于实时操作系统。可灵活的调整对各种作业/进程的偏好程度。
  2. 若源源不断地有高优先级进程到来,则可能导致饥饿。

5.6 是否会导致饥饿

6. 多级反馈队列

6.1 算法思想

对其他调度算法的折中权衡。

6.2 算法规则

  1. 设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
  2. 新进程到达时先进入第一队列……
  3. 只有第k即队列为空时,才会为第 k+1 级对头的进程分配时间片

6.3 用于作业/进程调度

用于进程调度。

6.4 是否可抢占

抢占式的算法。在k级队列的进程运行过程中,若更上级的队列(1-【k-1】级)中进入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回k级队列队尾。

6.5 优缺点

  1. 对各类型进程相对公平(FCFS优点)
  2. 每个新到达的进程都可以很快得到相应(RR的优点)
  3. 短进程只用较少的时间就可完成(SPF的优点)
  4. 不必实现估计进程的运行时间(避免用户作假)
  5. 可灵活地调整对各类进程的偏好程度,比如CPU密集型进程,I/O密集型进程

6.6 是否会导致饥饿

7.例题解析

7.1 先来先服务

在这里插入图片描述
在这里插入图片描述

7.2 短作业优先

在这里插入图片描述
在这里插入图片描述

7.2.1 最短时间剩余

在这里插入图片描述
在这里插入图片描述

7.3 高响应比

在这里插入图片描述
在这里插入图片描述

7.4 时间片轮转

在这里插入图片描述
在这里插入图片描述

7.5 优先级调度

在这里插入图片描述
在这里插入图片描述

7.6 多级反馈队列

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月29日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 先来先服务(FCFS,first come first serve)
    • 1.1 算法思想
      • 1.2 算法规则
        • 1.3 用于作业/进程调度
          • 1.4 是否可抢占
            • 1.5 优缺点
              • 1.6 是否会导致饥饿
              • 2. 短作业优先(SJF,shortest job first)
                • 2.1 算法思想
                  • 2.2 算法规则
                    • 2.3 用于作业/进程调度
                      • 2.4 是否可抢占
                        • 2.5 优缺点
                          • 2.6 是否会导致饥饿
                          • 3. 高响应比优先(HRRN)
                            • 3.1 算法思想
                              • 3.2 算法规则
                                • 3.3 用于作业/进程调度
                                  • 3.4 是否可抢占
                                    • 3.5 优缺点
                                      • 3.6 是否会导致饥饿
                                      • 4. 时间片轮转(RR,round-robin)
                                        • 4.1 算法思想
                                          • 4.2 算法规则
                                            • 4.3 用于作业/进程调度
                                              • 4.4 是否可抢占
                                                • 4.5 优缺点
                                                  • 4.6 是否会导致饥饿
                                                  • 5. 优先级调度
                                                    • 5.1 算法思想
                                                      • 5.2 算法规则
                                                        • 5.3 用于作业/进程调度
                                                          • 5.4 是否可抢占
                                                            • 5.5 优缺点
                                                              • 5.6 是否会导致饥饿
                                                              • 6. 多级反馈队列
                                                                • 6.1 算法思想
                                                                  • 6.2 算法规则
                                                                    • 6.3 用于作业/进程调度
                                                                      • 6.4 是否可抢占
                                                                        • 6.5 优缺点
                                                                          • 6.6 是否会导致饥饿
                                                                          • 7.例题解析
                                                                            • 7.1 先来先服务
                                                                              • 7.2 短作业优先
                                                                                • 7.2.1 最短时间剩余
                                                                                  • 7.3 高响应比
                                                                                    • 7.4 时间片轮转
                                                                                      • 7.5 优先级调度
                                                                                        • 7.6 多级反馈队列
                                                                                        领券
                                                                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档