3.1 处理机调度的层次和调度算法的目标

L14

学习目标

寄存器/Cache/内存/外存;局部性原理。

  • SOWL:片上 SRAM + Flash。
  • 速度与容量权衡。
  • 四条件:互斥、占有且等待、不可抢占、循环等待。破坏任一条件即可预防。
  • 银行家算法用安全序列避免进入不安全状态,实现代价高,适合动画理解。
  • 固件实例:任务 A 持 UART 锁等 GPIO,任务 B 持 GPIO 锁等 UART。超时放弃是工程折中。
  • Tick 推进 Delay 唤醒。
  • 优先级数值越小越高(LiteOS 习惯)。
  • Delay 依赖节拍(Tick):时钟中断或教学软件 tick 推进系统时间。

原理 · 深入理解

1.4 操作系统的主要功能

本节讨论「操作系统的主要功能」。请结合后面各小节的原理自学。

3.1.1 处理机调度的层次

处理机调度按运行频率分为三个层次。进程调度运行频率最高,负责把处理机分配给就绪进程。作业调度周期较长,又称长程调度,决定哪些作业从外存调入内存。中级调度频率介于两者之间,又称中程调度,主要用于在内存紧张时把进程换出换入。

三个层次配合,使系统在不同时间尺度上合理分配处理机资源。

  1. 进程调度:频率最高,又称短程调度
  2. 作业调度:周期长,又称长程调度
  3. 中级调度:频率居中,又称中程调度
处理机调度的三个层次 作业调度(高级) 选作业进入内存 · 嵌入式对照:任务就绪队列 中级调度(对换) MCU 通常不做 · 见第四章对换动画 进程 / 任务调度(低级) 谁上 CPU · 本课 Delay / 优先级 / 节拍

3.1.2 处理机调度算法的目标

处理机调度算法的目标在不同系统中各有侧重:批处理追求吞吐量和周转时间,分时追求响应时间,实时追求截止时间。

公平性也是重要目标:各进程应获得合理的 CPU 时间,不发生饥饿。

周转时间应尽可能短,否则用户等待过长。

平均周转时间、带权周转时间 W=T/Ts 和平均带权周转时间是衡量指标。

吞吐量是单位时间内系统完成的作业数,与作业平均长度有关。

分时系统和实时系统的调度目标各有侧重。

响应时间快

分时系统中进程调度的重要准则。

均衡性

系统响应时间应与用户请求服务的复杂性相适应。

进程间传送大量数据时,应利用 OS 提供的高级通信工具。

  1. 高效地传送大量数据:用户可直接利用高级通信命令高效传送
  2. 使用方便:OS 隐藏通信细节,提供一组通信原语,通信过程对用户透明
图3-19 每类资源有多个时的情况 P1 P2 R1 R2 方框里的点数表示该类资源的实例数
图3-19 每类资源有多个时的情况

做 · 实验

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
  • 编译 Delay 实验,观察串口周期性输出。
  • 对照预备篇裸机实验,用自己的话写出两种延时对 CPU 的影响。

打开工作台

处理机调度的层次和调度算法的目标

deadlock-banker

用控件单步操作;日志区记下每一步发生了什么。

代码导读

本课在工作台编译烧录。先读 user 实验入口,再对照 kernel / HDF 中被调用的函数,不要一上来改链接脚本。

总结与提升

  • 能画出嵌入式常见两级(SRAM/Flash)。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。
  • 能默写死锁四条件,并举一个固件中的例子。
  • 能叙述 Delay 从阻塞回到就绪的路径。
  • 能对比裸机忙等与本课 Delay。
  • 能指出抢占发生的条件。
  • 能说出本课调度落在哪一层。

延伸思考

  • 为何固件代码放 Flash 还可在 IRAM 执行热路径?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
  • 超时放弃算不算「解除死锁」?
  • 无硬件定时器时用忙等推进 Tick 的教学意义?

← 本阶段封面 · 课程列表