分页和交换是操作系统中虚拟内存管理的两种关键机制,用于高效利用物理内存并支持比实际物理内存更大的地址空间。以下是它们的定义和区别:
1. 分页(Paging)
定义
分页是将虚拟内存
和物理内存
分成固定大小的块
(称为页面,Page
),通过页面表(Page Table
)将虚拟地址映射到物理地址的内存管理方式。
工作原理
- 虚拟内存和物理内存被划分为大小相同的页面(通常为
4KB
或更大)。 - 每个内核通过页面表跟踪每个虚拟页面对应的物理页面位置。
- 当进程访问虚拟地址时,
内存管理单元(MMU)
将虚拟地址转换为物理地址。 - 如果页面不在物理内存中(即页面缺失,
Page Fault
),操作系统会从磁盘(如交换空间
)加载所需页面到物理内存。
特点
- 固定大小:页面大小统一,便于管理。
-
非连续分配:虚拟页面可以映射到物理内存中的非连续位置,减少碎片。
-
用途:分页支持虚拟内存,允许多个进程共享物理内存,同时保持地址空间隔离。
- 页面错误:当访问的页面不在内存中时,触发页面错误,操作系统将页面从磁盘调入内存,可能替换掉其他页面(页面置换算法,如LRU)。
优点
- 提高内存利用率,减少外部碎片。
- 支持进程隔离和多任务运行。
缺点
- 页面表需要额外存储空间。
- 页面错误可能导致性能开销。
2. 交换(Swapping)
定义
交换是将整个进程或部分内存页面从物理内存移到磁盘上的交换空间(Swap Space
),以释放物理内存供其他进程或页面使用。
工作原理
- 当物理内存不足时,操作系统选择某些进程或页面,将其数据写入磁盘的交换空间。
- 需要时,这些数据会被重新加载回物理内存。
- 交换通常与分页结合使用,页面可以被交换到磁盘。
特点
- 临时存储:交换空间通常是磁盘上的一个分区或文件(如Linux的swap分区)。
- 粒度:可以交换整个进程(传统交换)或单个页面(现代系统中更常见)。
-
性能影响:交换到磁盘的访问速度远慢于物理内存,可能导致系统性能下降。
- 用途:
- 允许系统运行超过物理内存容量的程序。
- 在内存压力大时,优先保留活跃进程的页面在内存中。
- 优点:
- 扩展可用内存,防止内存不足导致程序崩溃。
- 支持多任务处理。
- 缺点:
- 磁盘访问速度慢,频繁交换会显著降低性能。
- 过度依赖交换可能导致系统“卡顿”。
分页与交换的关系
-
结合使用:分页是虚拟内存的基础机制,交换是分页的扩展,用于在物理内存不足时将页面暂时存储到磁盘。分页使得交换可以按页面为单位进行,而不是整个进程。
- 场景:
- 分页:支持虚拟地址到物理地址的映射,处理页面错误。
- 交换:当物理内存不足时,将不活跃的页面移到交换空间。
- 例子:
- 假设一个系统有4GB物理内存,但运行的程序需要8GB内存。分页允许程序使用虚拟地址空间,而交换将不常用的页面存储到磁盘,确保活跃页面留在物理内存中。
总结
-
分页:将内存分成固定大小的页面,通过虚拟地址映射到物理地址,支持内存隔离和高效分配。
-
交换:将页面或进程移到磁盘的交换空间,释放物理内存,扩展可用内存。
-
两者共同实现虚拟内存,允许系统运行大型程序,但交换依赖磁盘,性能较低,应尽量避免频繁使用。