3.1 处理机调度的层次和调度算法的目标
L14
学习目标
寄存器/Cache/内存/外存;局部性原理。
- SOWL:片上 SRAM + Flash。
- 速度与容量权衡。
- 四条件:互斥、占有且等待、不可抢占、循环等待。破坏任一条件即可预防。
- 银行家算法用安全序列避免进入不安全状态,实现代价高,适合动画理解。
- 固件实例:任务 A 持 UART 锁等 GPIO,任务 B 持 GPIO 锁等 UART。超时放弃是工程折中。
- Tick 推进 Delay 唤醒。
- 优先级数值越小越高(LiteOS 习惯)。
- Delay 依赖节拍(Tick):时钟中断或教学软件 tick 推进系统时间。
原理 · 深入理解
1.4 操作系统的主要功能
本节讨论「操作系统的主要功能」。请结合后面各小节的原理自学。
3.1.1 处理机调度的层次
处理机调度按运行频率分为三个层次。进程调度运行频率最高,负责把处理机分配给就绪进程。作业调度周期较长,又称长程调度,决定哪些作业从外存调入内存。中级调度频率介于两者之间,又称中程调度,主要用于在内存紧张时把进程换出换入。
三个层次配合,使系统在不同时间尺度上合理分配处理机资源。
- 进程调度:频率最高,又称短程调度
- 作业调度:周期长,又称长程调度
- 中级调度:频率居中,又称中程调度
3.1.2 处理机调度算法的目标
处理机调度算法的目标在不同系统中各有侧重:批处理追求吞吐量和周转时间,分时追求响应时间,实时追求截止时间。
公平性也是重要目标:各进程应获得合理的 CPU 时间,不发生饥饿。
周转时间应尽可能短,否则用户等待过长。
平均周转时间、带权周转时间 W=T/Ts 和平均带权周转时间是衡量指标。
吞吐量是单位时间内系统完成的作业数,与作业平均长度有关。
分时系统和实时系统的调度目标各有侧重。
响应时间快
分时系统中进程调度的重要准则。
均衡性
系统响应时间应与用户请求服务的复杂性相适应。
进程间传送大量数据时,应利用 OS 提供的高级通信工具。
- 高效地传送大量数据:用户可直接利用高级通信命令高效传送
- 使用方便:OS 隐藏通信细节,提供一组通信原语,通信过程对用户透明
做 · 实验
- 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
- 编译 Delay 实验,观察串口周期性输出。
- 对照预备篇裸机实验,用自己的话写出两种延时对 CPU 的影响。
处理机调度的层次和调度算法的目标
deadlock-banker
用控件单步操作;日志区记下每一步发生了什么。
代码导读
本课在工作台编译烧录。先读 user 实验入口,再对照 kernel / HDF 中被调用的函数,不要一上来改链接脚本。
总结与提升
- 能画出嵌入式常见两级(SRAM/Flash)。
- 能用自己的话复述学习目标,并指出概念与板上实验的对应。
- 能默写死锁四条件,并举一个固件中的例子。
- 能叙述 Delay 从阻塞回到就绪的路径。
- 能对比裸机忙等与本课 Delay。
- 能指出抢占发生的条件。
- 能说出本课调度落在哪一层。
延伸思考
- 为何固件代码放 Flash 还可在 IRAM 执行热路径?
- 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
- 超时放弃算不算「解除死锁」?
- 无硬件定时器时用忙等推进 Tick 的教学意义?