文字上说:虚拟内存 = 交换空间
但是图片上说 : 虚拟内存  = 物理内存 + 交换空间

解决方案 »

  1.   

    他没说”虚拟内存=交换空间“啊,只是说通过交换空间来实现虚拟内存。不知道这是什么书,我感觉描述的不太准确。
    交换空间是硬盘上的交换分区空间,虚拟内存是内核维护用来给用户空间进程的。
    因为实际物理内存比较小(假如8G),其中内核占用1G,其余7G是给用户空间进程使用的。内核按照一定的规则虚出一个内存空间(虚拟内存),让每个用户空间的进程看到的都是8G。如果A进程占用1G,B进程占用2G,实际上他们在物理内存中占用了3G(内核知道并管理),但是进程A、进程B都认为自己总空间是8G。
    这样会导致一个问题,如果所有进程占用虚拟内存的总量达到了内核分配给用户空间的物理内存极限,就会提示内存不足。比如进程C还占用了4G,进程D就没法创建。
    解决办法就是通过交换空间(swap),把进程正常运行下去所缺少的实际内存空间分配到交换空间上,这样进程就能继续运行先去。
    所以,当使用了交换空间,意味着分配给用户空间的物理内存快要用完了甚至已经用完了。但是显然,硬盘上的交换空间IO速度比内存的速度慢了好多个数量级。
      

  2.   

    读书看明白意思就好了,别死扣字眼
    这些名词不同的人理解未必完全相同,有差异是正常的,强求一致即无可能,也没有必要。
    一台机器物理内存1g,交换空间1g,那么可以使用的内存是2g,操作系统根据一定的算法把它认为不怎么需要用的放在交换空间,最近急着要用的放物理内存。对于应用来说它有2g可用,应用除非有特殊情况,否则它不需要分辨这2g是物理内存还是有一部分在交换空间,从这个角度上看我们可以认为虚拟内存就是2g。