课程理念与指标定义
机制与策略结合
- 
理念提出:认为操作系统课程以往多侧重策略,而应先实现进程切换机制,如寄存器存储与读取,再研究合适策略。策略包括何时换进程及换谁上来,需定义测量指标。 
- 
指标定义:提出吞吐与延迟指标,高吞吐指大量任务完成时间除以任务数,延迟指单个任务执行时间,高吞吐与低延迟在系统中是矛盾关系。 
调度器介绍
- 
三种调度器:介绍 CFS 保障公平、PPLET 保障细粒度任务调度、EAS 保障系统能耗最优,提醒学生关注相关内容,避免考试失分。 
- 
多处理器调度:指出多处理器调度需均衡各 CPU 任务分配,但该问题多年未得到妥善解决,鼓励有兴趣的学生研究。 
内存管理基础
内存硬件原理
- 
原理讲解:考虑学生课程中缺乏内存硬件知识,宫晓利花十几分钟讲解内存工作原理,并分享优秀讲解视频。 
- 
内存分区挑战:提出在多个内存分区运行程序时,需解决程序访存地址修改问题,人工修改易出错,可借助编译器和链接器自动解决。 
重定位技术
- 
硬件支持:随着编程语言发展,编译器和链接器可确定程序地址排布。通过重定位技术,硬件在访存时自动将基地址与访问地址相加,实现地址转换,提高内存使用灵活性。 
- 
内存分配简化:有了硬件支持,可在大内存空间切分区域让程序运行,只需设置正确基地址和长度,无需开发者参与和二进制修改。 
内存管理数据结构与分配方法
数据结构选择
- 
位图与链表:介绍位图和链表两种内存管理数据结构。位图以块为单位记录内存分配情况,通过位表示分配状态,需考虑块大小和空间利用率;链表节点分占用和空闲两种,需处理节点分裂和合并问题。 
- 
不同数据结构特点:位图空间利用率高,链表操作灵活,但都有各自的优缺点和适用场景。 
内存分配方法
- 
三种分配方法:讨论最佳适配、最先适配、最差适配三种内存分配方法。最佳适配符合直觉但需排序且易产生碎片,最先适配运行时查找效率高但后期查找困难,最差适配产生的碎片可再利用概率大。 
- 
实际应用:现代系统常将空闲内存块整理成堆,采用堆顶分配方式,体现不同分配方法在实际中的应用。 
Buddy system 内存分配器
- 
原理与特点:Buddy system 以 2 的整数次幂分配内存,通过折半操作找到合适内存块,释放内存时可合并相邻区域。该方法可保障大片连续内存、便于地址计算和提高运行效率。 
- 
数据结构关联:其结构类似数据结构中的二叉树,与红黑树、AVL 树相关,现代操作系统内核曾使用红黑树,新内核版本改用哈希表提高运行效率。 
内存不足解决方案
内存紧凑与压缩
- 
紧凑方法:当内存有可用空间但不连续时,可通过移动程序实现内存紧凑,但该过程需调用 Memmove 或 Memcopy 函数,消耗时间和资源,且可能刷掉 cache 数据。 
- 
压缩方法:可使用霍夫曼压缩等方法压缩内存,但使用时需解压缩,增加额外操作。 
内存分区兑换(swap)
- 
原理与应用:当内存不足时,将进程数据和指令搬运到磁盘,释放内存空间加载新进程。需选择合适状态的进程进行兑换,如等待状态且未来一段时间不运行的进程。 
- 
置换策略:介绍多种置换策略,如换出占用内存大的进程、根据用户充值情况或窗口活跃度等,不同系统采用不同策略。 
虚拟内存技术
覆盖技术启发
- 
技术原理:覆盖技术通过分析程序代码,发现部分代码片段不会同时运行,可按需加载,如游戏中的过关动画。但该技术对程序员要求高,已被淘汰。 
- 
技术价值:覆盖技术启发了虚拟内存技术,即不必一次性加载程序声称的所有资源,可按需加载。 
虚拟内存实现
- 
地址转换机制:虚拟内存技术通过 MMU 截获程序内存访问指令,将其重定位到物理内存上。通过建立页与页框的对应关系表,实现地址转换。 
- 
页表设计与管理:页表可采用数组、字典、哈希表等数据结构存储,需考虑未分配页框的表示方法。MMU 硬件自动完成地址转换,操作系统处理缺页异常。 
缺页异常处理
- 
异常触发与响应:程序首次访存时,若页表中无对应页框,MMU 产生缺页异常,操作系统捕获异常后,根据 Maps 文件分配页框、填充数据,修改页表。 
- 
异常返回与执行:缺页异常返回后,应用程序重新执行访存指令,此时页表已更新,访存成功,程序继续运行。 
编译与内存布局
Maps 文件作用
- 
文件构建:Maps 文件记录应用程序开发时的内存布局,在编译的最后阶段生成,存储在磁盘上。 
- 
异常处理依据:操作系统根据 Maps 文件处理缺页异常,确定应用程序所需数据的位置,如全局变量初始化为 0,局部变量可随机分配页框。 
编译与加载过程
- 
编译阶段:编译器规划应用程序地址空间布局,通过链接器将程序数据和指令存到磁盘,形成可执行文件。 
- 
加载阶段:双击应用程序图标,操作系统根据 Maps 文件将程序加载到内存,实现编译和运行时的内存布局一致。 
页大小与多级页表
页大小选择
- 
硬件影响:硬件设计决定页大小多为 4K,软件若不采用 4K 页可能无法适配。 
- 
系统设计考量:从系统设计角度,页大小与地址线数量、页表项数量等因素相关,多级页表可节省内存,32 位和 64 位系统页大小受多种因素制约。 
多级页表机制
- 
结构原理:多级页表通过先查页表的页表,再查具体页表,减少不必要的内存分配,提高内存使用效率。 
- 
参数调整:多级页表结构类似 B + 树,需调整表中参数,确保各节点与页大小匹配,便于内存管理。 
后续工作计划
- 
课程学习:学生需阅读指定的 3 种调度器相关资料,掌握其原理和应用。 
- 
实验推进:9 月 30 号下午正常上课,晚上学生自行在实验室或宿舍推进实验内容,宫晓利会提前发布直播会议链接。 
- 
作业完成:学生需实现 Buddy system 内存分配器,深入理解其工作原理和实现细节。