据我了解,程序在虚拟内存中分配了连续的地址空间。地址空间包含堆、堆栈、数据和文本部分以及一些空闲空间。
但实际上,这些部分在物理内存 (RAM) 中并不连续。如果是这样,那它不能解决外部碎片吗?我的意思是,外部碎片的全部意义在于我们没有足够的连续空间。那么,为什么不分解段并使用非连续空间呢?
我知道我错过了一些东西。有人可以详细说明一下吗?谢谢。
据我了解,程序在虚拟内存中分配了连续的地址空间。地址空间包含堆、堆栈、数据和文本部分以及一些空闲空间。
但实际上,这些部分在物理内存 (RAM) 中并不连续。如果是这样,那它不能解决外部碎片吗?我的意思是,外部碎片的全部意义在于我们没有足够的连续空间。那么,为什么不分解段并使用非连续空间呢?
我知道我错过了一些东西。有人可以详细说明一下吗?谢谢。
逻辑到物理页面映射解决了一个碎片问题,但不是全部。操作系统通常具有可能变得碎片化的内存池。此外,操作系统还需要操作物理内存。一个例子是页表本身。页表的某些部分(如果不是全部,取决于底层硬件)必须在物理内存中。
物理内存:物理内存是指计算机中的 RAM 或主内存。物理内存是易失性内存。因此,它需要持续的电力流动来保留数据。
虚拟内存:虚拟内存是逻辑内存。换句话说,它是一种由操作系统执行的内存管理技术。虚拟内存允许程序员为程序使用比可用物理内存更多的内存。如果物理内存为 4GB,虚拟内存为 16GB,则程序员可以使用 16GB 的虚拟内存来执行程序。使用虚拟内存,他可以执行比物理内存需要更多内存的复杂程序。
物理内存和虚拟内存的主要区别在于,物理内存是指连接在主板上的系统的实际 RAM,而虚拟内存是一种内存管理技术,允许用户执行比实际物理内存更大的程序。