Skip to content

内存管理基本概念

考情分析

内存管理在 408 真题中累计考查约 134 分(2009-2026),其中基本内存管理约 28 分,虚拟内存管理约 106 分。本文是基础概念篇,属于 🔥🔥 中高频。

程序写好了,怎么放进内存、放在哪里、怎么防止进程之间互相踩踏?这就是内存管理要解决的三个核心问题。

内存管理的功能

功能说明
内存分配与回收为进程分配内存空间,进程结束后回收
地址转换将逻辑地址转换为物理地址
内存保护防止进程越界访问其他进程的内存
内存共享允许多个进程共享同一段内存
内存扩充通过虚拟内存技术突破物理内存限制

逻辑地址与物理地址

概念说明
逻辑地址(虚拟地址)程序中使用的地址,从 0 开始编址
物理地址(绝对地址)内存中的实际地址
地址空间逻辑地址的集合称为逻辑地址空间,物理地址的集合称为物理地址空间

程序编译后产生的是逻辑地址,运行时需要转换为物理地址。

地址重定位

将逻辑地址转换为物理地址的过程称为地址重定位(Address Relocation)。可以把它理解为"翻译"——程序说的是自己的门牌号,重定位负责把它翻译成真正的街道地址。

三种装入方式

方式转换时机是否可移动说明
绝对装入编译时不可编译时就知道物理地址,只适用于单道程序
静态重定位装入时不可装入内存时将逻辑地址转换为物理地址,之后不能移动
动态重定位运行时可以通过重定位寄存器在运行时转换,进程可在内存中移动

动态重定位

物理地址 = 逻辑地址 + 重定位寄存器(基址寄存器)的值

内存保护

防止进程访问不属于自己的内存区域:

方法一:上下限寄存器

  • 上限寄存器:记录进程的最大物理地址
  • 下限寄存器:记录进程的最小物理地址
  • CPU 每次访存时检查:下限 ≤ 物理地址 ≤ 上限

方法二:基址寄存器 + 限长寄存器

  • 基址寄存器:进程的起始物理地址
  • 限长寄存器:进程的地址空间长度
  • CPU 先检查逻辑地址 < 限长,再加上基址得到物理地址

三种链接方式

方式说明
静态链接编译后将所有模块链接成一个完整的可执行文件
装入时动态链接装入内存时才进行链接
运行时动态链接运行时遇到未链接的模块才链接(如动态库 .dll/.so)

内碎片与外碎片

类型说明产生原因
内碎片分配给进程但未被使用的空间分配单位大于实际需要(如分页)
外碎片内存中空闲但太小无法利用的区域多次分配回收后产生(如动态分区)

考研高频考点

  • 🔥🔥🔥 逻辑地址与物理地址的转换(动态重定位)
  • 🔥🔥🔥 内碎片与外碎片的区别
  • 🔥🔥 三种装入方式(绝对/静态/动态)
  • 🔥🔥 两种内存保护方式
  • 🔥 动态重定位的优势(进程可移动)

理解了地址转换和内存保护的基本概念后,下一个问题是:内存空间到底该怎么分给各个进程?下篇来看连续分配的三种策略。

真题练习

相关真题(2题)

2011Q30选择题2分

逻辑地址形成:链接阶段确定程序各模块的逻辑地址

2010Q27选择题2分

分区保护:界地址(上下界/基址+限长)是主要保护措施