导图社区 存储器管理
这是一篇关于存储器管理的思维导图,主要内容包括:对换与覆盖,连续分配存储管理方式,程序的装入与链接,存储器层次结构。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
存储器管理
存储器层次结构
寄存器
CPU内部存储单元
访问速度最快
用于存储临时数据和中间结果
高速缓存(Cache)
位于CPU和主存之间
用于减少CPU访问主存的延迟
分为L1、L2、L3等不同级别
主存(RAM)
随机存取存储器
用于存储操作系统、应用程序和数据
易失性存储,断电后数据丢失
辅存(硬盘、SSD)
非易失性存储
用于长期存储数据和程序
速度比主存慢,容量大
磁盘缓存
程序的装入与链接
程序的编译
预编译
处理预处理指令
编译
将预处理后的文件翻译成汇编语言
汇编
将汇编语言转换成机器语言,生成目标代码
程序的链接
链接过程
将编译后生成的目标模块和所需的库函数链接在一起,形成一个总的装入模块
链接方式
静态链接
定义
在程序运行之前,将各目标模块及所需的库函数链接成一个完整的装入模块,以后不再拆开。
特点
生成的可执行文件较大,但运行时无需额外的加载和链接步骤。
优点
提高程序执行速度,减少兼容性
装入时动态连接
在程序装入内存时,边装入边链接,即发现一个外部模块调用时,立即装入该模块并进行链接。
便于修改和更新程序中的模块,无需重新打开整个装入模块。
运行时动态链接
对某些目标模块的链接,是在程序执行中需要该模块时,才进行链接。
可以节省内存空间,因为只加载当前需要的模块。
程序的装入
绝对装入方式
定义:在编译时,如果知道程序将驻留在内存的具体位置,则编译程序将产生绝对地址的目标代码。
特点:程序中的逻辑地址与实际内存地址完全相同,无需地址转换。
适用场景:单道程序环境,内存使用情况简单明确。
可重定位装入方式
定义:将装入模块装入内存的适当位置,并在装入时对模块中的地址进行重定位(即修改)。
特点:允许程序装入到内存的任意位置,但装入时地址是固定的,运行期间不能移动。
适用场景:多道程序环境,编译时无法预知程序最终装入内存的位置。
动态运行时装入方式
定义:程序装入内存后,不立即进行地址转换,而是在程序真正执行时才进行地址转换。
特点:允许程序在内存中的位置动态变化,需要一个重定位寄存器的支持。
适用场景:需要程序在内存中频繁移动的场景,如支持对换功能的系统。
地址绑定与内存保护
逻辑地址
物理地址
内存保护
连续分配存储管理方式
为用户进程分配一段连续的内存空间,确保程序中的逻辑地址在物理内存中也是相邻的。
主要分配方式
单一连续分配
特点: 最简单的内存管理方法,适用于单道程序环境。 内存分为系统区和用户区,用户区仅有一个单独的分区供用户程序使用。
优缺点: 优点:简单易于实现,没有外部碎片。 缺点:只能用于单用户、单任务的操作系统,内存利用率低,内部碎片大。
固定分区分配
内存划分
将用户内存空间划分为若干个固定大小的分区。 每个分区只能装入一个作业。
分区大小
大小相等:适用于控制多个相同对象的场合,但缺乏灵活性。 大小不等:提高灵活性,划分为多个小分区、适量中分区、少量大分区。
优缺点
优点:可用于多道程序系统,无外部碎片。 缺点:内部碎片大,存储空间利用率低,缺乏灵活性。
动态分区分配
优缺点: 优点:提高内存利用率,灵活性高。 缺点:容易产生外部碎片,需要复杂的内存管理策略。
对换与覆盖
对换
定义:对换通常指的是两个或多个元素之间的位置或状态的交换。
特性: 双向性:对换涉及两个方向的移动或变化。 可逆性:对换后的状态可以通过再次对换恢复到原始状态。
覆盖
定义:覆盖指的是一个元素或集合被另一个元素或集合所替代或遮蔽。
特性: 单向性:覆盖通常是一个方向的过程,即新的元素或集合取代旧的。 不可逆性:一旦覆盖发生,原始状态可能无法完全恢复。