王道操作系统笔记,视频链接:3.1.1.2 内存管理的概念
知识总览
- 内存管理的概念
- 内存空间的分配与回收
- 内存空间的扩充
- 地址转换
- 存储保护
内存管理的功能
- 内存空间的分配与回收:
- 问题:
- 操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?
- 操作系统要怎么记录 哪些内存区域已经被分配 出去了,哪些又还空闲?
- 新的进程到达,很多位置都可以放,那应该放在哪里?
- 当进程运行结束之后,如何将进程占用的内存空间回收?
- 在此不展开,之后会有专门的小节进行介绍
- 操作系统负责内存空间的分配与回收
- 问题:
- 内存空间的扩充:
- 操作系统需要提供某种技术从逻辑上对内存空间进行扩充(实现虚拟性)
- 在此不展开,之后会有专门的小节进行介绍
- 地址转换:
- 为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。
- 而逻辑地址到物理地址的转换 (这个过程称为地址重定位 )应该由操作系统负责,
- 地址重定位利用三种装入方法实现:
- 绝对装入 :
- 编译时产生绝对地址
- PS:因为该方法仅在单道程序阶段使用,此时操作系统尚未诞生,
- 所以实际上绝对装入是由编译器完成的,并非操作系统
- 可重定位装入 :
- 装入时将逻辑地址转换为物理地址
- PS:由装入程序负责进行,一般用于早期的多道批处理操作系统
- 动态运行时装入 :
- 运行时将逻辑地址转换为物理地址,需设置重定位寄存器
- PS:这种方式一般是现代操作系统的装入方式,
- 之后学习页式存储和段式存储的时候会经常接触这种方式
- 绝对装入 :
- 地址重定位利用三种装入方法实现:
- 这样就保证了程序员写程序时不需要关注物理内存的实际情况。
- 操作系统需要提供地址转换 功能,负责程序的逻辑地址与物理地址的转换
- 内存保护:
- 操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰
- 一般来说,内存会分为操作系统使用的内存区域与普通的应用程序使用的内存区域
- 各个用户进程会被分配到各自的内存空间,进程只能访问自己的内存空间
- 如果用户进程一想对其他进程或操作系统的内存空间进行访问,应该阻止,
- 否则会影响整个系统的安全。
- 这就是内存保护希望做的事情
- 各个用户进程会被分配到各自的内存空间,进程只能访问自己的内存空间
- 例子:
- 假设进程1的逻辑地址空间为0 → \to → 179,实际物理地址空间为 100 → \to → 279
- 内存保护可采取两种方法:
- 方法一:在CPU中设置一对上、下限寄存器 ,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
- 方法二:采用重定位寄存器 (又称基址寄存器 )和界地址寄存器 (又称限长寄存器 )进行越界检查。重定位寄存器中存放的是进程的起始物理地址 。界地址寄存器中存放的是进程的最大逻辑地址 。
- PS:可以理解为前者记录线段的起点,后者记录线段的长度
知识回顾与重要考点

- 该小节仅对内存管理进行一个简单的框架介绍