第四章:地址空间# 引言 本章导读 实践体验 本章代码树 本章代码导读 Rust 中的动态内存分配 本节导读 静态与动态内存分配 静态分配 动态分配 Rust 中的堆数据结构 在内核中支持动态内存分配 地址空间 本节导读 虚拟地址与地址空间 地址虚拟化出现之前 加一层抽象加强内存管理 增加硬件加速虚实地址转换 分段内存管理 分页内存管理 SV39 多级页表的硬件机制 本节导读 虚拟地址和物理地址 内存控制相关的CSR寄存器 地址格式与组成 地址相关的数据结构抽象与类型定义 页表项的数据结构抽象与类型定义 多级页表 SV39 地址转换过程 快表(TLB) 管理 SV39 多级页表 本节导读 物理页帧管理 可用物理页的分配与回收 分配/回收物理页帧的接口 多级页表管理 页表基本数据结构与访问接口 内核中访问物理页帧的方法 建立和拆除虚实地址映射关系 内核与应用的地址空间 本节导读 实现地址空间抽象 逻辑段:一段连续地址的虚拟内存 地址空间:一系列有关联的逻辑段 内核地址空间 应用地址空间 基于地址空间的分时多任务 本节导读 建立并开启基于分页模式的虚拟地址空间 创建内核地址空间 检查内核地址空间的多级页表设置 跳板机制的实现 扩展Trap 上下文 切换地址空间 建立跳板页面 加载和执行应用程序 扩展任务控制块 更新对任务控制块的管理 改进 Trap 处理的实现 改进 sys_write 的实现 小结 超越物理内存的地址空间 本节导读 有限的物理内存 超越物理内存的方法 分时复用内存 动态内存分配 最先匹配(first fit)策略 最优匹配(best fit)策略 最差匹配(worst fit)策略 减少碎片 覆盖(Overlay)技术 内存交换 交换技术 虚拟内存技术 页面置换机制 作为交换区的存储设备 页表项(Page Table Entry) 内存访问异常处理 页面置换策略 内存层次结构与局部性原理 评价指标 策略范畴 最优置换策略 FIFO置换策略 LRU置换策略 Clock置换策略 工作集置换策略 缺页率置换策略 Belady异常现象 小结 练习 课后练习 编程题 问答题 实验练习 实践作业 重写 sys_get_time mmap 和 munmap 匿名映射 实验要求 问答作业 实验练习的提交报告要求 练习参考答案 课后练习 编程题 问答题 实验练习 实践作业 重写 sys_get_time mmap 和 munmap 匿名映射 实验要求 问答作业 实验练习的提交报告要求