Windows 程序存储器与 Linux 程序存储器

Windows Program Memory Vs Linux Program Memory

Linux 为每个要使用的程序创建虚拟内存页,OS 处理将虚拟地址映射到真正的硬件地址,对吗?

但是Windows是怎么做到的呢? Windows 程序真的有可以转换为真实硬件地址的内存吗?我也知道 windows 可以在 RAM 过度使用时使用硬盘内存,这个过程又被称为虚拟内存,但我相信这是一个完全不同的概念?

Windows 和 Linux(至少在 Intel 32/64 位系统上)都使用相同的机制实现虚拟内存:硬件支持的页表。 OS和硬件配合做地址映射。

将程序使用的逻辑地址与物理地址分开的整个概念就是所谓的虚拟内存。使用硬盘作为后备存储是虚拟内存的一种实现,它使用交换文件将虚拟内存的数量增加到大于系统中安装的物理内存的数量。

虚拟内存是一个很深很广的课题。也许从这篇 Wiki 文章 Memory Management 开始,然后搜索 google 以获得更深入的理解。