所谓虚拟内存你可以从字面意思来理解它,他不是真正的内存。
我们知道程序都是放到内存中运行的,但是当程序过大,内存放不下的时候,我们就需要用到虚拟内存技术。现在的内存都比较大,不用自己在设置过多的虚拟内存,虚拟内存就是把一部分硬盘空间当作内存来用。
虚拟内存有三种调度方式,页式调度、段式调度、段页式调度。
页式调度:就是将虚拟空间划分成大小一样的页,主存空间也分成大小相同的页,通过一个页表可以进行地址变换取到想要的数据。
段式存储:页式存储有一个缺点就是他与程序的逻辑大小没有关系,不利于程序的独立性,程序的一个模块可能不在一个页内。而段式就是根据程序的逻辑大小动态分配的一段空间。
段页式存储:就是在实存中分页,在虚拟内存中先按程序分段,段内再按实存内页的大小分页。
虚拟内存地址映射也有三种方式,全相联变换、直接变化、组相联变换
全相联变化:就是虚拟内存中的任何一块都可以映射到主存中的任意一块。
直接变化:就是虚拟内存中的一个页只能映射到主存中特定的一个页上。
组相联变化:就是先分组,组间是直接变化,组内是全相联变化。
当虚拟内存满了的时候,就需要用到替换算法,比如:先来先替换,最近最少使用,最优替换算法(不能实现,一般用来衡量别的算法的性能优劣)