Skip to main content

第六章:内存管理

内存管理是操作系统中的重要组成部分,负责管理计算机系统中的主存空间,确保进程能够高效地使用内存资源,并防止不同进程之间的内存干扰。良好的内存管理可以提高系统的性能和稳定性。

6.1 内存管理的基本概念

内存管理是操作系统对计算机主内存的分配和管理。它确保多个进程能够高效共享内存资源,同时保持数据安全性和完整性。

6.2 内存分配方式

6.2.1 固定分区分配(Fixed Partition Allocation)

将内存划分为若干固定大小的分区,每个分区分配给一个进程。

特点- 内存分区在系统启动时确定,不能动态调整。
优点- 实现简单。 分配和回收速度快,开销小。
缺点- 内存浪费:如果分区比进程大,未使用的空间被浪费(内部碎片)。 灵活性差:不适合大小变化的进程。

示例:
假设有 100MB 的内存分成了 4 个固定分区(20MB、30MB、30MB 和 20MB)。

  • 一个 10MB 的进程会占用 20MB 的分区,多余 10MB 被浪费。
  • 一个 35MB 的进程无法分配,因为它比任何分区都大。

6.2.2 动态分区分配(Dynamic Partition Allocation)

根据进程实际需要动态分配内存,不固定分区大小。

特点- 分区大小根据进程需求动态分配。
优点- 更高效利用内存。适合大小不同的进程。
缺点- 外部碎片:内存中小块空闲空间无法被利用。

示例:
如果有 100MB 内存:

  • 第一个 25MB 的进程会占用 25MB。
  • 第二个 40MB 的进程占用接下来的 40MB。
  • 内存中剩余的 35MB 可以被另一个小于 35MB 的进程使用。

6.3 虚拟内存的实现

6.3.1 分页(Paging)

将物理内存划分为固定大小的 页框(Frame),将进程的内存需求划分为相同大小的 (Page)。
作用:

  • 提供连续的逻辑地址空间,避免内存碎片。
  • 程序员无需关心物理内存地址。

6.3.2 页面置换算法(Page Replacement Algorithms)

当内存空间不足时,操作系统会选择某个页面移出内存,使用置换算法选择移出的页面:

算法说明
FIFO(先进先出)移出最早进入内存的页面。简单但可能移出常用页面。
LRU(最近最少使用)移出最近最少使用的页面。通常比 FIFO 更高效。

示例:
假设内存只有 3 个页框,依次加载页面 1、2、3、4:

  • FIFO 会移出最早加载的页面 1。
  • LRU 会移出最近最少使用的页面。

总结

内存管理是操作系统中的关键环节,通过分配和回收内存、使用虚拟内存技术以及高效的页面置换算法,保证系统的稳定运行和高效资源利用。掌握这些内存管理策略,有助于理解操作系统如何在复杂的多任务环境中协调和优化内存资源。