外部碎片的解决方案 - 非连续分配

时间:2016-11-17 12:44:41

标签: memory-management operating-system contiguous

据我所知,程序在虚拟内存中分配了连续的地址空间。地址空间包含堆,堆栈,数据和文本部分以及一些可用空间。

但实际上,这些部分在物理内存(RAM)中并不连续。如果是这种情况,那么它能解决外部碎片问题吗?我的意思是,外部碎片的全部意义在于我们没有足够的连续空间。那么,为什么不拆分段并使用不连续的空间呢?

我知道我错过了什么。有人可以详细说明吗?感谢。

2 个答案:

答案 0 :(得分:1)

逻辑到物理页面映射解决了一个碎片问题,但不是所有碎片问题。操作系统通常具有可能变得碎片化的内存池。此外,操作系统需要操纵物理内存。一个例子是页表本身。页表的某些部分(如果不是全部 - 取决于底层硬件)必须在物理内存中。

答案 1 :(得分:0)

物理内存:物理内存是指计算机中的 RAM 或主内存。物理内存是易失性内存。因此,它需要持续的电力流动来保留数据。

虚拟内存:虚拟内存是一种逻辑内存。换句话说,它是一种由操作系统执行的内存管理技术。虚拟内存允许程序员为程序使用比可用物理内存更多的内存。如果物理内存是4GB,虚拟内存是16GB,程序员就可以使用16GB的虚拟内存来执行程序。使用虚拟内存,他可以执行需要比物理内存更多内存的复杂程序。

物理内存和虚拟内存的主要区别在于,物理内存是指连接在主板上的系统的实际RAM,而虚拟内存是一种内存管理技术,允许用户执行比实际物理内存更大的程序记忆。