操作系统有虚拟内存与物理内存的概念。
问题: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) + 物理内存