调度算法

名称 英文 作业调度 进程调度 说明 特点
先来先服务 First-come first-served, FCFS 适用 适用 按作业到达先后顺序(即优先考虑等待时间最长的) 非抢占式
短作业优先 short job first, SJF 适用 适用 作业越短(即运行时间越短)优先级越高 非抢占式(有抢占式)
优先级调度算法 priority-scheduling algorithm, PSA 适用 适用 优先级由作业紧迫程度决定 抢占式和非抢占式两种
高响应比优先调度算法 Highest Response Ratio Next, HRRN 适用 优先级动态改变且与时间关联,响应比的计算增加系统开销 非抢占式
时间片轮转 Round Robin, RR 适用 就绪队列的进程每次运行一个时间片 抢占式
多级反馈队列调度算法 multi level feedback queue, MLFQ 适用 多个优先级队列,每个队列采用FCFS,优先级高的队列空了再从低的队列调度 抢占式

*SJF算法有抢占式版本,后文可见


基于公平性角度考虑还有保证调度算法公平分享调度算法

保证调度算法的目标是:保证对于n个进程,每个进程都获得1/n的处理机时间

平分享调度算法是针对用户而言的。若用户1有4个进程而用户二有1个,如果按RR调度,用户1则占用了80%的处理机时间,而用户2才占用20%。该算法的目的是确保用户1和用户2占用的处理机时间一样,而不是进程。


系统采用调度算法未必只有一个,可以结合使用

例如MLFQ就可以为每个队列使用FCFS

各算法详细说明

FCFS(最简单的非抢占式调度算法)

对短作业不利,对长作业有利

这里的是否有利的衡量标准是带权周转时间。只考虑等待时间意味着对长作业有利,只考虑运行时间则对短作业有利,

这个思路就是一个队列,队首是下一次要执行的,而要后加入的进入队尾。

具有Convoy 效应,又作护航效应:所有其他进程都等待一个大进程释放CPU资源。

SJF(具有抢占式版本SRTF)

可能存在饥饿问题(长进程得不到处理),具有抢占和非抢占两种方式

常用于长程调度

优点是在所有调度算法中平均等待时间最短,缺点是实际不可行(因为不知道执行时间),当然,可以用先前的估算。


Shortest Remaining Time First (SRTF)是SJF的抢占式版本,其中处理器被分配给最接近完成的作业。 但开销也更多。

PSA

为了照顾紧迫型进程,应采用PSA

貌似也有人管这个叫PR

可以模拟其他调度算法

HRRN

响应比的额外计算增加开销,但是避免了长作业饥饿的问题

优先权=等待时间+要求服务时间要求服务时间=响应时间要求服务时间优先权=\frac{等待时间+要求服务时间}{要求服务时间}=\frac{响应时间}{要求服务时间}优先权=要求服务时间等待时间+要求服务时间​=要求服务时间响应时间​

RR

分时系统一般采用RR

时间片太大,意味着每个进程都能在一轮执行完毕,则退化为FCFS。

上下文切换开销大。

新创建的进程被添加到就绪队列的末尾(有点像FCFS)

某种程度上算是FCFS的抢占式版本

MLFQ

只有当前一级别队列空时,才去调度后一级别队列

较低优先级队列中的进程可能会由于一些短进程占用所有 CPU 时间而遭受饥饿。

上述问题可以通过定期提高所有进程的优先级并将它们全部放入最高优先级队列中解决。

关键知识点

抢占与非抢占区别

抢占意味着可以被中断,非抢占意味着只要执行了就一定能执行完。

非抢占式开销小,实现简单。

在抢占式调度中,调度程序可根据某种原则暂停某个正在执行的进程,将已分配给它的CPU重新分配给另一进程。这种方式比较复杂,系统开销大。进程切换频繁,但是可防止单一进程长时间独占CPU。

主要原则有:

  1. 优先权原则
  2. 短进程优先原则
  3. 时间片原则

在非抢占式调度方式中,引起进程调度的原因有:

  1. 正在执行的进程执行完毕,或因发生某事件而使其无法执行
  2. 正在执行的进程因提出I/O请求而暂停执行
  3. 进程通信/同步过程执行了某种原语(如block)

非抢占式调度方式是进程主动让出,而抢占式由调度程序去操作它让出

各类“时间”

就绪队列里的是进程,不是作业

到达时间(Arrival Time):进程进入就绪队列的时间

运行时间(Burst Time/Execution time/Running time):进程在 CPU 上执行所需的时间,在执行进程之前无法预先知道该进程的运行时间。

周转时间(Turn Around Time):进程从提交到运行结束的全部时间(进程花费的总时间)

等待时间(Waiting Time):进程等待调度(没有运行)的时间片总和(等待获取CPU的时间)

响应时间(Response Time):从进程提交到首次运行的时间段(首次运行不意味着运行完毕)

带权周转时间:周转时间/执行时间


响应时间<=等待时间

周转时间=等待时间+运行时间

周转时间=完成时间-等待时间

两道时间计算题解析

假设一个系统中有3个进程,到达时间依次为0,1,3。运行时间依次为3、5和2。若按照时间片轮转(时间片为2)调度算法调度CPU,那么各进程的平均周转时间为:____

6

其中竖着的黑线意思是到达时间,不难看出(7+3+9)/3≈6.3≈6

另外该图亦体现出RR很重要的一点:当时间片未用完且仅进程结束,时间片也会终止,进行下一轮


假设一个系统中有5个进程,它们到达的时间依次为0、1、2、3和4,运行时间依次为2、3、2、4和1,优先数分别为3、4、2、1、5。若按照非抢占优先数调度算法(优先数小则优先级高)调度CPU,那么各进程的平均周转时间为:____

5.4

先明确一点:非抢占式,也就是每个进程只要运行就能一次运行完,不会被中断。


(2+10+2+5+8)/5=5.4

短程调度和长程调度之差异

短程调度:频率高、速度快、开销小
长程调度:频率低、速度慢、开销大

*长程调度主要用于多道批处理系统,分时和实时系统不设置这个

CPU调度时机

从运行转到等待(非抢占式)

从运行转到就绪(抢占式)

从等待转到就绪(抢占式)

终止运行(非抢占式)

调度层次

名字 又作 又作 调度对象
高级调度 长程调度 作业调度 作业
中级调度 内存调度 进程
低级调度 短程调度 进程调度 进程(或内核级线程)

中程调度将进程在内存和外存间换进换出(暂时不能用的进程调入外存,即挂起),以提高内存利用率。

习题

下列进度调度算法中,( )可能出现进程长期得不到运行的情况。

A、静态优先数算法

B、抢占式短作业优先算法

C、时间片轮转调度算法

D、先来先服务算法

A


抢占式CPU调度可能发生在一个进程()时。

A、从运行转到就绪

B、从运行转到等待

C、从运行转到终止

D、新建进程

A

其实意思是,从运行态,发生了抢占之后,会到哪个状态,显然是就绪态。


当系统中( )时,将不会引起系统执行进程调度原语。

A、一个新进程被创建

B、在非抢占调度中,进程A正在运行而进程B恰好被唤醒

C、当前进程执行了P操作

D、分时系统中的时间片用完

B

当然,对于A,如果当前系统的是抢占式,新进程优先级又是最高的,那其实A也不对,当然,答案给的是B。二来新进程被创建,如果是创建->静止就绪,那么被安置在外存,不参与调度(汤晓丹计算机操作系统第四版P43页上方)

B的唤醒,只是说它在就绪队列排好队了,但是不涉及调度

P操作是:当进程在等待资源的时候执行p操作,将信号量减1,如果执行减1后的信号量大于等于0,则该进程则进入执行环节,否则会继续等待。

参考与一些有学习价值的网页

geekforgeeks

[易百教程]操作系统教程

[操作系统笔记]处理机调度相关推荐

  1. 【408预推免复习】操作系统之处理机调度与死锁

    [408&预推免复习]操作系统之处理机调度与死锁 文章目录 1 作业调度和进程调度 2 实时调度和死锁概述 3 预防死锁和避免死锁 1 作业调度和进程调度 什么是处理机调度? 处理机调度:如何 ...

  2. 处理机调度实验c语言,操作系统实验处理机调度C语言实现

    操作系统实验处理机调度C语言实现 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  3. c语言处理机调度实验报告,操作系统实验处理机调度C语言实现.docx

    操作系统实验处理机调度C语言实现.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  4. 【操作系统】—处理机调度的概念以及层次

    [操作系统]-处理机调度的概念以及层次 本章节学习内容如下 一.调度的基本概念 当有一堆任务要处理,但由于资源有限,这些事情没办法同时处理,这就需要确定某种规则来决定处理这些任务的顺序,这就是&quo ...

  5. 【操作系统】处理机调度与死锁(三)

    [操作系统]处理机调度与死锁(三) 一.前言 二.处理机调度的层次 2.1 高级调度 2.2 低级调度 2.3 中级调度 三.调度队列模型和调度准则 3.1 仅有进程调度的调度队列模型 3.2 具有高 ...

  6. 【操作系统】处理机调度:处理机调度的层次和调度算法的目标

    处理机调度的层次: (1)高级调度(长程调度,作业调度): [操作系统]处理机调度:作业与作业调度_暮色_年华的博客-CSDN博客 调度对象是作业. 将外存上处于后备队列中的哪几个作业调入内存,为它们 ...

  7. 操作系统之处理机调度

    处理机调度# 处理机调度的三个层次: 高级调度--作业调度 中级调度--内存调度 低级调度--进程调度 补充 进程的 挂起态 七状态模型 调度的基本概念 当有一堆任务要处理,而资源有限,无法同时处理: ...

  8. linux处理机调度实验报告,模拟Linux操作系统下处理机调度实验报告

    在采用多道系统的设计程序中,往往有若干进程同时处于就绪状态.当就绪状态进程数大于处理机数时,就必须按照某种策略来决定哪些进程优先占用处理机.本实验模拟在单处理机情况下处理机调度 处理机调度 一.实验目 ...

  9. 计算机操作系统:处理机调度相关

    处理机调度所需要解决的问题:在多道处理系统中由于进程多于处理机而产生的一系列问题. 1,长程调度(高级调度):将作业从外存调入就绪队列(阻塞到就绪): 2,短程调度(处理机调度,进程调度):将作业从就 ...

最新文章

  1. notepad++ 快捷键
  2. jquery跟js初始化加载的多种方法及区别介绍
  3. windows下python安装Numpy和Scipy模块
  4. 静态连接库、动态链接库
  5. data structure begin!!
  6. 使用的 SQL Server 版本不支持数据类型“datetime2”解决办法
  7. 面试问题汇总 精选 分析 解答 职业规划 part 4
  8. 基于java+springboot+layui的流浪动物交流信息平台设计实现
  9. java火柴人吃豆豆,4399游戏火柴人吃豆豆全图文通关攻略分享
  10. 微信小程序UI设计规范及文档模版
  11. 特斯拉Model 3进化不止 传统车企到底应该学什么?
  12. 使用 Groovy 合并 MSN 聊天记录
  13. java 8 stream 的学习
  14. 计算机网络安全设计毕业设计,计算机网络安全及防护毕业设计论文01
  15. uniapp onReachBottom 不触发
  16. [进阶]-多线程、多进程、异步IO实用例子
  17. bandgap的理解(内部带隙电压基准)
  18. 如何判断您是否需要新的iPhone电池
  19. 这5款PC工具不容错过,抓紧收藏起来
  20. ncl如何添加线shp文件_教程合集 | 地图数据找不到?家园都有解决方案!

热门文章

  1. Fiddler抓包工具基本操作-抓包APP篇
  2. 服务器硬盘坏了怎么看,服务器硬盘坏了怎么办?如何修复服务器硬盘?
  3. 银河麒麟安装后,网速过慢,经常断网,网卡:RTL8111/8168/8411
  4. [AI 笔记] BP反向传播算法
  5. 【无标题】常见攻击构造方法
  6. python:将多张图片合成一张显示
  7. A script engine for the specified language can not be created
  8. 《惢客创业日记》2018.12.13(周四) 创业从0到1的10个阶段(四)
  9. linux下iostat命令无效,iostat命令详解
  10. cas server的使用