第二章 Part2 进程调度与算法实现

第二章 Part2 进程调度与算法实现

第一节 处理机调度

基本概念:

调度:利用规则确定处理任务的顺序

  • 处理器调度:按照一定算法选择一个进程并将处理机分配给它运行,以实现程序的并发

三个层次

高级调度(作业调度):外存和内存间的数据交互——无 -> 创建态 -> 就绪态

  1. 按照一定原则从外存上后备队列中的作业选取一个
  2. 分配内容,建立进程(PCB)
  3. 给予它竞争处理机的权利

高级调度是外存与内存间的调度,每个作业只调入、调出一次

  • 调入作业时创建PCB,作业调出时撤销PCB(回收系统资源)

中级调度(内存调度):决定将那个挂起状态的进程重新调入内存

引入虚拟存储之后,可能需要将暂时不能运行的进程调入外存等待

  • 可以提升内存利用率和系统吞吐量

  • 暂时调入外存的程序被称作挂起状态,PCB不会被一起调入外存

  • 被挂起的PCB被放到挂起队列中

低级调度(进程调度):从就绪队列中选择进程,并给它分配处理机——就绪态 - > 运行态

  • 最基本的调度,频率很高

三个层次调度的联系、对比

作业调度

外存 -> 主存

无 -> 创建态 -> 就绪态

发生频率低

中级调度

外存(虚拟内存) -> 内存(面向进程)

挂起态 -> 阻塞态

发生频率中

低级调度

内存 -> CPU

就绪态 -> 运行态

发生频率高

第二节 进程调度的时机、切换与过程的调度方式

进程调度即第一节所述低级调度

时机

什么时候需要进程调度

  • 当前进程主动放弃处理机

    进程正常终止

    发生异常总之

    阻塞等待

    ……

  • 当前进程被动放弃处理机

    时间片用完

    紧急事件

    有更高优先级的事件进入队列

什么时候不能进行进程调度

  • 中断处理过程

  • 进程在操作系统内核临界区中

    注意区分临界区和内核临界区

  • 原语操作过程中

切换与过程

进程调度进程切换

调度:选中一个要运行的进程

  • ”狭义的“进程切换:让一个进程让出处理机,由另一个进程占用处理机的过程

    1. 对原进程的各种数据进行保存
    2. 对新进程的各种数据进行恢复

广义的进程切换:调度+”狭义的“进程切换,两个步骤之和

进程切换需要做什么

方式

非剥夺调度方式(非抢占式):只允许进程主动放弃处理机

剥夺调度方式(抢占式):有更重要的任务需要处理时,剥夺处理机资源

第三节 调度算法的评价指标

本节需要理解和计算

CPU利用率:忙碌时间 / 总时间、甘特图

系统吞吐量:总作业量 / 总时间

周转时间:作业提交到系统,到作业完成的时间。

周转时间 = 作业完成时刻 - 作业提交时刻

平均周转时间 = 时间之和 / 作业数

带权周转时间 = 周转时间 / 实际运行时间

等待时间:作业处于等待状态的时间之和

响应时间:提交请求到首次相应的事件

第四节 调度算法(一)

  1. 算法解决什么问题

  2. 算法规则

  3. 用于作业调度和进程调度

  4. 抢占式 or 非抢占式

  5. 优缺点

  6. 是否导致饥饿?

    饥饿:指某个进程或作业长期得不到服务

先来先服务(FCFS,first come first service)

算法思想:公平

算法规则:按照到达的顺序(优先服务等待时间长的)

调度:

作业调度:看谁先到后备队列

进程调度:看谁先到就绪队列

是否抢占:非抢占

优缺点:

优:简单、公平

缺:对长作业有利,短进程不利(长作业后的短作业需要等待很长事件)

饥饿:不会

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

算法思想:追求最少的平均等待事件、最少平均周转时间、最少平均带权周转时间

算法规则:(已到达的)最短的进程最先得到服务

调:

作业调度:

进程调度:用于进程调度时称作短进程优先算法 (STRN,shortest remaining time next)算法

优缺点:

优:“最短”的平均等待时间

缺:对短作业有利长作业不利、运行时间可能不真实、长作业饥饿

饥饿:(长作业)可能饥饿

高响应比优先(HRRN,high)

算法思想:综合考虑等待时间和占用服务时间

算法规则:

计算相应比 -> 选择最高相应比的服务或进程

响应比:(等待时间 + 要求服务时间)/ 要求服务时间

调度:作业、进程调度均可

是否抢占:非抢占

优缺点

优:综合考虑了等待时间和运行时间

是否饥饿:不会饥饿

这三种算法适合早期的批处理系统,不区分任务的紧急程度,缺乏交互性

(二)中将介绍用于交互式系统的调度算法

第五节 调度算法(二)

  1. 算法思想
  2. 算法规则
  3. 作业or进程调度
  4. 是否抢占
  5. 优缺点
  6. 是否饥饿

时间片轮转(RR,Round-Robin)

算法思想:公平轮流的为各进程服务,让每个进程得到相应

算法规则:

按照到达就绪队列的时间执行

  • 执行时间为一个时间片

若没能在一个时间片内执行完,则剥夺处理机,将进程放在队尾重新排队

用途:用于进程调度,因为只有创建进程后才能被分配处理机的时间片

是否抢占:

  • 抢占式算法

  • 由时钟装置发出时钟中断通知时间

优缺点:

优点:公平,相应快,适用于分时操作系统

缺点:进程切换有开销,不区分进程紧急程度

是否饥饿:不会导致饥饿

补充(时间片过大过小有什么影响):

时间片过大,则时间片轮转算法将退化为先来先服务算法,增大相应时间

时间片过小,进程切换过于频繁,消耗系统资源

应当保证切换进程的开销占比不超过1%

优先级调度算法

算法思想:需要根据紧急程度来决定任务顺序

算法规则:为每个作业 / 进程设定优先级,调度时选择优先级最高的作业/ 进程

用于作业 / 进程调度:可以用于作业调度也可用于进程调度

是否抢占:

抢占式:在就绪队列变化时检查是否需要抢占

非抢占式:等待进程放弃处理机

优缺点:

优点:灵活调整任务的偏好程度

缺点:饥饿

是否饥饿:低优先级进程可能发生饥饿

补充:

就绪队列可能不止一个

根据优先级是否能改变,可以分为静态优先级和动态优先级

  • 优先级划分

    系统进程高于用户进程’

    前台进程高于后台进程

    优先执行I / O繁忙型进程

多级反馈队列调度算法

算法思想:折中平衡

算法规则:

  1. 多级就绪队列,各队列优先级由高到低,时间片由小到大

  2. 新进程到达后进入1级队列,按照FCFS原则等待被分配时间片。

    若时间片用完进程还未结束,则重新放回下一级队列队尾

  3. 只有K级队列为空时,才会为K + 1级队头的进程分配时间片

用途:用于进程调度

是否抢占:抢占式算法

在K级队列运行过程中,若更上级队列(1~K - 1)中加入了一个新进程,则由于新进程优先级较高,新进程抢占处理机

优缺点:

优:公平,不必预计进程运行时间

缺:可能饥饿

是否饥饿:会导致饥饿

适用于交互式系统(注重相应时间、公平性、平衡性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值