我经常对操作系统中的虚拟化概念感到困惑。考虑到RAM是物理内存,为什么我们需要虚拟内存来执行进程?
当来自外部硬盘驱动器的进程(程序)被带到主存储器(物理存储器)执行时,该虚拟存储器位于何处。
谁负责虚拟内存,虚拟内存的大小是多少?
假设RAM的大小为4GB(即2 ^ 32-1地址空间),虚拟内存的大小是多少?
除其他事项外,虚拟内存是一种抽象,使程序员有在其系统上拥有无限可用内存的幻觉。
虚拟内存映射对应于实际的物理地址。该操作系统创建和这些映射的交易-利用其他的数据结构中的页表,以保持映射。虚拟内存映射始终在页表或某些类似的数据结构中找到(对于其他虚拟内存实现,我们可能不应该将其称为“页表”)。页表也位于物理内存中-通常位于用户程序无法覆盖的内核保留空间中。
虚拟内存通常大于物理内存-如果虚拟内存和物理内存大小相同,则没有太多理由进行虚拟内存映射。
通常,只有程序的所需部分驻留在内存中-这是一个称为“分页”的主题。虚拟内存和分页紧密相关,但不是同一主题。虚拟内存还有其他实现,例如分段。
我可能在这里假设是错误的,但是我敢打赌,您发现难以解决的问题与虚拟内存的特定实现有关,最有可能是分页。没有一种分页的方法-有很多实现,而您的教科书描述的实现可能与在像Linux / Windows这样的真实操作系统中出现的实现不同-可能存在细微的差异。
我可以大写一千篇关于分页的文章…但是我认为最好留给另一个专门针对该主题的问题。