虚拟内存与物理内存

操作系统有虚拟内存与物理内存的概念。

问题:32位的操作系统中,每个进程有4GB(不是一定)的内存是真实存在的吗?

答:不是,是虚拟内存

问题:32位的操作系统中,每个进程有4GB(不是一定)的内存是物理内存吗?

答:不是,如果每个进程都存在4GB的话,操作系统根本处理不过来

如图:当进程A的0x123地址存储的值为3,进程B的0x123地址存储的值为5,并且可以一起运行

问题:虚拟内存中的值实际存储到哪里?

答:实际存储在物理内存的某一个地址中

问题:物理内存和虚拟内存的联系?

答:如图,当虚拟内存中的值真正需要用的时候,物理内存才会开辟一段地址来存储虚拟内存中的值

问题:物理内存是什么结构的?

在interx86结构中,按照4KB大小进行页分配的,4KB/页,页为单位,那么上面的图也可以理解为如下:

小知识:物理内存与内存条之间还有一层映射,具体我不懂,以后再补上

问题:每个进程的4GB虚拟内存是如何划分的?

首先可以划分为低2G,高2G

低2G(用户空间):0 ~ 7FFFFFFF

高2G(内核空间):80000000 ~ FFFFFFFF

用户空间:用户操作的空间都在用户空间中,在用户空间中又分为3部分,分别为 空指针赋值区、用户模式区、64KB禁入区

内核空间:所有进程都是相同的,都有这么一个相同的内核空间

用户空间:那么也可以理解为,用户实际操作的空间还要去除上下的64KB大小的物理页

小知识点:其实空指针赋值区和64KB禁入区想用还是可以使用的!

问题:当物理内存物理页不够用时,操作系统会怎么操作?

操作系统有开辟一块硬盘空间作为内存来使用的功能,这个功能默认是开启的。而硬盘毕竟不是内存,所以称为"虚拟内存"。同时,内存的速度远非硬盘所能企及,所以把硬盘当内存使能运行多程序但会降低运行速度。

如果你的电脑c:pagefile.sys,存在的话,那么就是把磁盘的一部分作为物理内存进行处理,该虚拟内存和上面的虚拟内存含义不一样!

所以真正能使用的物理内存的大小则为:虚拟内存(pagefile.sys) + 物理内存

原文地址:https://www.cnblogs.com/zpchcbd/p/12253713.html