第2章 进程与线程(2)

2.2处理机调度

2.2.1 调度的概念

处理机调度时多道程序操作系统的基础,是操作系统设计的核心问题。

  • 调度的层次
    在这里插入图片描述

(1)高级调度(作业调度)外存->内存[频率最低]创建态->就绪态

  • 按照一定的原则从外存上的后备队列挑出一个或多个,给它们分配内存,输入/输出设备,建立相应的进程。
  • 多道批处理系统中大多配有作业调度。其他系统不需要配置作业调度。

(2)中级调度(内存调度)外存->内存[频率中等]就绪态/阻塞态->挂起态

  • 目的是提高内存利用率和系统吞吐量。将暂时不能运行的进程调入外存
  • 本质是存储器管理中的对换功能。

(3)低级调度(进程调度)内存->cpu[频率最高]就绪态->运行态

  • 根据算法从就绪队列选择一个进程,分配处理机。

三级调度的联系
1)作业调度为进程活动做准备,进程调度使进程活跃起来
2)中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间
3)进程调度是最基本的。


2.2.2 调度算法的性能指标

  • (1) C P U 利用率 = C P U 有效工作时间 C P U 有效工作时间 + C P U 空闲等待时间 CPU利用率=\frac{CPU有效工作时间}{CPU有效工作时间+CPU空闲等待时间} CPU利用率=CPU有效工作时间+CPU空闲等待时间CPU有效工作时间
  • (2)系统吞吐量:单位时间内CPU完成作业的数量
  • (3)周转时间
    周转时间 = 作业完成时间 − 作业提交时间 周转时间 = 作业完成时间-作业提交时间 周转时间=作业完成时间作业提交时间

    平均周转时间 = 作业 1 的周转时间 + . . . + 作业 n 的周转时间 n 平均周转时间 = \frac{作业1的周转时间+...+作业n的周转时间}{n} 平均周转时间=n作业1的周转时间+...+作业n的周转时间

    带权周转时间 = 作业周转时间 作业实际运行时间 带权周转时间 = \frac{作业周转时间}{作业实际运行时间} 带权周转时间=作业实际运行时间作业周转时间

    带权周转时间 = 作业 1 的带权周转时间 + . . . 作业 n 的带权周转时间 n 带权周转时间 = \frac{作业1的带权周转时间+...作业n的带权周转时间}{n} 带权周转时间=n作业1的带权周转时间+...作业n的带权周转时间
  • (4)等待时间
    进程等待时间 : 进程建立后等待被服务的时间之和 进程等待时间:进程建立后等待被服务的时间之和 进程等待时间:进程建立后等待被服务的时间之和
    作业等待时间 : 进程等待时间 + 外存后备队列等待时间 作业等待时间:进程等待时间+外存后备队列等待时间 作业等待时间:进程等待时间+外存后备队列等待时间
  • (5)响应时间: 用户提交请求到系统首次产生响应所用的时间 用户提交请求到系统首次产生响应所用的时间 用户提交请求到系统首次产生响应所用的时间

2.2.3 调度的实现

在这里插入图片描述

  • 1.调度程序

    触发条件
    ①创建新进程
    ②进程退出
    ③进行进程阻塞
    ④I/O中断(唤醒阻塞进程)


    非抢占式调度:只有运行进程阻塞或退出才触发调度程序工作
    抢占式调度:只有时钟中断或K个时钟中断才会触发调度程序工作


    程序的作用
    ①排队器。将就绪进程按一定策略排成一个或多个队列
    ②分派器。根据调度程序所选进程,从就绪队列取出
    ③上下文切换器。处理机进行切换时,发生上下文切换。(1)将当前进程上下文保存到PCB中,再装入分派程序上下文。(2)移除分派程序的上下文,将新选进程的CPU的现场信息装入处理机的各个相应寄存器。

  • 2.调度的时机,切换和过程

    不能进行程序调度与切换的情况
    ①处理中断过程。
    ②进程在操作系统内核临界区。
    ③其他需要完全屏蔽中断的原子操作过程。


    进程主动放弃处理机:
    ①进程正常终止
    ②进程异常终止
    ③主动请求阻塞


    进程被动放弃处理机
    ①时间片用完
    ②有更紧急事件(I/O中断)
    ③更高优先级进程进入就绪队列

  • 3.进程调度方式

    非抢占式调度:实现简单,开销小。适用于大多数批出操作系统。不适用于分时系统和大多数实时系统。
    抢占式调度:可以提高系统吞吐率和响应效率。

  • 4.闲逛进程

    该进程的优先级最低。只有处理机空闲且就绪队列为空时才允许。不需要除CPU外的资源


2.2.4 典型的调度算法

早期批处理调度算法

  • 1.先来先服务【作业/进程】(非抢占式)
    对所有作业是公平的
    特点:
    算法简单低效。
    长作业有利,短作业不利。
    有利CPU繁忙型,不利于IO繁忙型。
    不存在饥饿现象。

  • 2.短作业优先【作业/进程】(抢占式/非抢占式)
    可以分为抢占式和非抢占式两种具体的算法。
    抢占式是每次有新的作业/进程加入就会调度;非抢占式只有运行结束才会调度。
    默认的都是非抢占式
    特点:
    对长作业不利
    未考虑作业的紧急情况
    作业长短由用户估计,可能会导致不能真正的做到短作业优先

    优点:
    平均等待时间/平均周转时间最短

    缺点:
    不公平,短作业优先可能产生饥饿现象。

  • 3.高响应比优先调度算法【作业/进程】(非抢占式)
    仅在当前作业/进程主动放弃处理机才会调度
    响应比 = 等待时间 + 要求服务时间 要求服务时间 响应比=\frac{等待时间+要求服务时间}{要求服务时间} 响应比=要求服务时间等待时间+要求服务时间
    特点:
    兼顾长短作业。
    等待时间相同,服务时间越短响应比越高。
    克服饥饿现象

交互式操作系统

  • 1.时间片轮转算法【进程调度】(抢占式)
    每个进程每次调度使用相同大小的时间
    时钟中断通知CPU时间片用完
    优点:
    公平,响应快,是用于分时操作系统。
    实现简单,无饥饿现象
    cpu利用率高

    注意点:
    时间片不能过长或过短。
    时间片太长会退化成先来先服务算法
    时间片太短会导致进程切换频繁,处理机开销大

  • 2.优先级调度算法【作业/进程】(抢占式/非抢占式)
    特点:
    优先处理紧急任务,适用于实时操作系统。
    抢占式的是有新进程到达就调度。
    非抢占式是只有主动放弃处理机才调度。
    追求公平和系统利用率

    优先级:
    静态优先级在创建后不会改变。
    动态优先级在运行期间随着进程情况调整。

    优先级参考原则:
    系统进程>用户进程
    交互式进程>非交互式进程
    IO型进程>计算型进程(越早响应IO进程可以越早实现CPU与IO设备并行)

    动态优先级参考案例:
    进程在就绪队列等待时间过长。提高优先级
    进程占用处理机时间过长。降低优先级
    进程频繁进行IO操作。提高优先级

    系统进程(内存管理等)>交互式进程(游戏软件等)>批处理进程(AI训练模型)

  • 3.多级反馈队列调度算法【进程】(抢占式)
    优点:
    终端型作业用户:短作业优先
    长批处理作业用户:周转时间短
    短批处理作业用户:不会长期得不到处理
    在这里插入图片描述

先来先服务短作业优先高响应比时间片轮转多级反馈队列
能否是可抢占队列内算法不一定
能否是不可抢占队列内算法不一定
优点公平,实现简单平均等待时间最少,效率最高兼顾长短作业兼顾长短作业兼顾长短作业,有较好的响应时间,可行性强
缺点不利于短作业长作业可能会饥饿,估计时间不确定计算响应比的开销大平均等待时间较长
适用于作业调度,批处理系统分时系统相当通用
默认决策模式非抢占式非抢占式非抢占式抢占式抢占式

2.2.5进程切换

  • (1)上下文切换
    ①挂起进程,保存CPU上下文,包括程序计数器和其他寄存器
    ②更新PCB
    ③把进程的PCB移入相应的队列
    ④选择其他进程执行,并更新其PCB
    ⑤转跳新进程PCB中PC所指向的位置
    ⑥恢复处理机上下文

  • (2)上下文切换的消耗
    每秒都要进行几百上千次的切换,这些切换都是纳秒级的时间。
    若提供多个寄存器组,切换进程只需要简单改变当前寄存器组的指针

  • (3)上下文切换于模式切换
    上下文切换只能在内核态。
    模式切换是CPU的用户态和内核态的转换。

调度是资源决定分配进程行为。切换是实际的分配行为!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mystic Musings

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值