虚拟内存概念
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)。但是实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
虚拟内存的工作原理
当进程开始运行时,先将一部分程序装入内存,另一部分暂时留在外存;当要执行的指令不在内存时,由系统自动完成将它们调入内存的工作;当没有足够的内存时,系统自动选择部分暂时不被执行的内存空间,将其中原有的内容交换(swap)到磁盘上,并释放这些内存空间供其他进程使用。
为什么要使用虚拟内存?
操作系统的物理内存是有限的,假设有4G物理内存,一个软件占用了2G内存,当我们开了2个这样软件的时候,物理内存基本就消耗殆尽了。
但是电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽,为了解决这个问题,Windows 运用了虚拟内存技术。
其次,就是安全性,虚拟内存为每个进程提供了独立的,隔离的,安全的空间。
虚拟内存的作用
- 虚拟内存可以使得进程对运行内存超过物理内存大小,因为程序运行符合局部性原理,CPU访问内存会有很明显的重复访问的倾向性,对于那些没有被经常使用到的内存,我们可以把它换出到物理内存之外,比如硬盘上的 swap 区域,从而释放物理内存空间,使其他应用程序能够正常运行。这有助于提高系统性能,尤其是在多任务处理时。
- 由于每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。进程也没有办法访问其他进程的页表,所以这些页表是私有的,这就解决了多进程之间地址冲突的问题。
- 页表里的页表项中除了物理地址之外,还有一些标记属性的比特,比如控制一个页的读写权限标记该页是否存在等。在内存访问方面,操作系统提供了更好的安全性。