我相信,很多朋友会把虚拟内存认为就是交换分区。
其实,虚拟内存并非真正存在的物理空间,它仅仅是一个虚拟的东西,
说白了,就是用来悠进程的,进程会把虚拟内存当作是分给它们的内存。
早期的计算机运行程序时,是直接让进程去占用物理内存的,但是直接占用物理内存有诸多问题。
至于啥问题,我今天不在这篇文章里描述。
总之,为了解决这些问题,
聪明的计算机科学家就发明了隔在物理内存和进程之间的虚拟内存。
虚拟内存在32位系统上,最大为4G(2的32次方),所以64位的系统上,最大虚拟内存就非常大了。
为什么说32位操作系统上最大支持物理内存为4G,就是因为这个原因。
每个进程在运行时,都会被分配足够运行它的虚拟内存,这部分虚拟内存大小即使比物理内存大也没有关系。进程被分配虚拟内存后,内核再把虚拟内存映射到物理内存上去。
虚拟内存使得每个应用程序都认为自己拥有独立且连续的可用的内存空间(一段连续完整的地址空间)。
而实际上,它通常是被映射到多个物理内存段,还有部分暂时存储在外部磁盘存储器上(这部分磁盘空间就是swap空间),
在需要时再加载到内存中来。
当物理内存不太够用,或者当物理内存中有些数据被认为是不常用的数据时,内核就会把这部分数据存储到swap上。
其实,即使内存够用,内核同样也会把一些数据存到交互分区里,只不过这样的数据量并不会太大。
关于内存管理的细节后续我再整理总结吧。
全部0条评论
快来发表一下你的评论吧 !