“内存管理”学习提纲
前言
操作系统的知识抽象、晦涩、不易理解并记忆,在此对“内存管理”一章中重点知识总结成提纲。
内存管理概念
内存管理的目的
- 提高内存利用率
- 方便用户
内存管理的功能
- 地址转换
- 内存保护
- 内存分配与回收
- 内存共享
- 内存扩充
源程序转换为执行程序(在内存中)的过程
- 编译
- 链接(静态链接,装入时动态链接,运行时动态链接)
- 装入(绝对装入,可重定位装入/静态重定位,动态运行时装入/动态重定位)
进程的内存映像组成
从高到低地址:
- 操作系统内核区/用户代码不可见区/环境变量区
- 栈区
- 共享函数库的存储映射区
- 堆区
- 数据区
- 代码区
- 未使用区
内存保护的方法
- 在中央处理器(CPU)中使用一对访问地址上、下限寄存器
- 使用限长/界地址寄存器和重定位/基地址寄存器
内存连续分配的方式
- 单一连续分配——有内部碎片
- 固定分区分配(分区大小相同,分区大小不同)——有内部碎片
- 可变/动态分区分配——有外部碎片
可变/动态分区分配策略
- 首次适应(FF)算法
- 邻近适应(NF)/循环首次适应算法
- 最佳适应(BF)算法
- 最坏适应(WF)算法
内存非连续分配的方式
- 分页存储管理——有内部碎片
- 分段存储管理——有外部碎片
- 段页式存储管理——有内部碎片
分页存储管理的类型(分段、段页式同理)
- 基本分页存储管理
- 请求分页存储管理
分页存储管理的相关概念
- 页/页面
- 页框/页帧
- 块/盘块
- 逻辑、物理地址结构
- 页表、页表项
- 基本地址变换机构
- 有快表/相联存储器(TLB)的地址变换机构
- 多级页表
分段存储管理的相关概念
- 段
- 逻辑、物理地址结构
- 段表
- 地址变换机构
注意:一个进程中,只能有一个段表,可能有多个页表
内存扩充的方法
- 覆盖技术——对同一个程序或进程
- 交换/对换技术——对不同作业、程序或进程
- 虚拟内存技术
注意:覆盖技术过时,使用虚拟内存技术代替
虚拟内存容量应满足的条件
- 虚拟内存的实际容量<=内存容量+外存容量
- 虚拟内存的最大容量<=计算机地址位数能容纳的最大容量
虚拟内存管理
局部性原理的表现形式
- 时间局部性——对指令、数据
- 空间局部性——对存储单元
虚拟存储器的特征
- 多次性
- 对换/离散性
- 虚拟性
虚拟内存技术的实现方式
- 请求分页存储管理
- 请求分段存储管理
- 请求段页式存储管理
支持虚拟内存技术的硬件
- 内存、外存
- 地址变换机构
- 页/段表机制
- 缺页/段中断机构
请求分页存储管理的相关概念
- 地址变换机构
- 页表机制
- 缺页中断机构
请求分页存储管理的内存分配、置换策略
驻留集:页框/页帧集合
- 固定分配,局部置换
- 可变分配,全局置换
- 可变分配,局部置换
请求分页存储管理的内存固定分配算法
- 平均分配算法
- 按比例分配算法
- 优先权分配算法
请求分页存储管理的调页策略/时机(何时)
- 预调页策略——运行前
- 请求调页策略——运行时
请求分页存储管理的调页区域(何地)
- 外存的文件区
- 外存的对换区
- 内存
请求分页存储管理的页面置换算法(怎样)
- 最佳(OPT)置换算法——无法实现
- 先进先出(FIFO)置换算法——会出现Belady异常
- 最近最久未使用(LRU)置换算法
- 最近未使用(NRU)/时钟(CLOCK)置换算法、改进型时钟(CLOCK)置换算法
总结
操作系统的知识抽象、晦涩、不易理解并记忆,在此对“内存管理”一章中重点知识总结成提纲。
参考资料
- 《2023年操作系统考研复习指导》组编:王道论坛
作者的话
- 感谢参考资料的作者/博主
- 作者:夜悊
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 夜悊的技术小宅!