什么是虚拟内存?


虚拟内存是逻辑内存从物理内存中划分出来的一部分。当只有有限的物理内存可用时,这种划分可以为程序员提供更大的虚拟内存。

虚拟内存可以给程序员一种错觉,即他们拥有非常大的内存,即使计算机只有较小的主内存。它使编程更容易,因为程序员不再需要担心可用的多个物理内存。

虚拟内存的工作方式类似,但在内存层次结构中向上提升了一级。内存管理单元(MMU) 在物理内存和某些次级存储设备(通常是磁盘)之间传输数据。此存储区域可以定义为交换磁盘或交换文件,具体取决于其执行情况。从物理内存检索数据比从交换磁盘访问数据快得多。

实现虚拟内存的两种主要方法如下:

  • 分页

分页是一种内存管理技术,其中分配的是小的固定长度的页,而不是动态分配技术中单个大的可变长度的连续块。在分页系统中,每个进程都被分成几个固定大小的“块”,称为页,通常为 4k 字节。内存空间也分成相同大小的块,称为页框。

分页的优点

分页的优点如下:

  • 在分页中,不需要外部碎片。

  • 在分页中,相同大小的页和页框之间的交换很清晰。

  • 分页是一种简单的内存管理方法。

分页的缺点

分页的缺点如下:

  • 在分页中,可能存在内部碎片。

  • 在分页中,页表占用更多内存。

  • 由于多级分页,可能会出现内存引用开销。

  • 分段

根据用户的角度,将内存划分为称为段的逻辑单元称为分段。分段允许每个段独立增长并共享。换句话说,分段是一种将内存划分为称为段的逻辑相关单元的技术。这意味着程序是由段的集合组成的。

与页不同,段的大小可以不同。这要求 MMU 以与管理分页内存略有不同的方式来管理分段内存。分段 MMU 包含一个段表来跟踪驻留在内存中的段。

段可以从多个地址中的一个开始,并且可以是任何大小,每个段表条目都应包含起始地址和段大小。某些系统允许段从任何地址开始,而其他系统则限制起始地址。Intel X86 架构中就存在这样一个限制,它要求段从地址的低四位为 6000 的地址开始。

更新于:2023年11月3日

36K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告