其实虚拟内存就是字面意思,虚拟保存在磁盘中的,我们知道32为操作系统下一个进程是4g大小空间,我们物理内存(也就是我们说的内存条),假如我们以8g内存条定义。
假如我们没有虚拟内存,那么8g内存条在32位系统下理论只能跑俩进程,要知道我们电脑打开任务管理器可以看到那么多进程在跑。
我们在学习进程线程的时候,里面说的线程进程(绝大多数)都是并发执行,那么在一个cpu资源下(时间片),我们就只能跑一个进程。
说到这里,也就应该明白 :在一段时间片里物理内存,只被一个进程所占,那么我们把没有分配时间片的进程内存利用SWP技术转移到磁盘中,当需要执行的时候在转移到物理内存中。
当然我们说的一个进程是4g,那也只是虚拟的,实际上一个进程的内存其实是很小的。
举个例子64位操作系统一个进程是4T,普通磁盘根本装不下。
进程在创建的时候分配的内存地址为虚拟内存地址,是通过虚拟内存间接寻址的方式获取到的,与实际的物理内存虽然有联系,但不是一对一的使用比例。什么意思?:一块物理内存是被多个虚拟地址指向的。
这里我们需要一个虚拟内存映射表这个东西,就是管理虚拟内存与物理内存映射关系的,系统的内存管理器负责管理维护这些映射条目。
具体一些细节建议百度这里就不提了