什么是虚拟内存
虚拟内存是一种计算机内存管理技术,它允许程序使用比实际物理内存(RAM)更大的地址空间。它的基本原理是将暂时不使用的内存页存储到磁盘(如交换空间)中,当程序需要访问这些数据时,再将它们加载回物理内存。
虚拟内存的基本思想是每个程序拥有属于自己的地址空间,虚拟内存被划分成若干个页(Page),而物理内存被划分为若干个页框(Page Frame),每个页框的大小与页面大小相同。
虚拟内存的优势
- 提高多任务处理能力 允许多个进程共享 CPU 资源,而不受物理内存限制,提高了系统并发能力。
- 高效的内存利用 结合 页面置换算法,虚拟内存可以自动将暂时不用的页面交换到磁盘,腾出 RAM 供活跃进程使用。
- 支持更大的应用程序 程序可以使用比实际物理 RAM 更大的地址空间,从而支持大型应用,如数据库、视频处理、游戏等。
- 提高系统稳定性 通过分页(Paging)和分段(Segmentation)机制,避免程序访问非法内存区域,从而减少崩溃风险。
页表
虚拟内存是逻辑上的地址空间,本质上是一种抽象概念。程序或进程访问虚拟内存时,必须将其映射到实际的物理内存(RAM)中进行访问。操作系统采用分页和页表的方式完成这个映射
页表从数学或编程的角度来看,可以理解为一个函数。该函数通过虚拟内存的页号,返回的是所对应的物理内存页框号,每个页面表项 (PTE) 包含关于特定内存页面的信息,如物理地址、是否在内存中、读写权限等。我们先来看一下页表中包含了什么
页面表项中存储的信息
-
帧号 : 页表中的帧号(PFN, Page Frame Number)是物理页框号,它的作用是 将虚拟页号(VPN, Virtual Page Number)映射到