存储管理中虚拟内存是当内存容量不足时需要考虑的一个问题。那么:
- 1)虚拟内存是否可实现?
- 2)虚拟内存如何扩展内存容量?
接下来看看,怎么内存是通过外存来扩展的。
1) 虚拟内存是否可以实现?
为什么提出这个问题,实际上问的是这个问题:程序真的可以划分成很多块,取部分程序块装入较小的内存中,然后还能正确运行么?
面对后者提问,可以将程序的逻辑地址正确转化物理地址,实现程序的分块;同时为了高效的完成逻辑地址映射到物理地址的操作,使用页式管理,段式管理或两者结合的方式。
但是由于是从外存中装入到内存中,由于访问外存的速度相对于更慢,是否能高效的完成这个动作?经过大量的试验发现程序的运行符合局部性原理,集中访问程序中的某几块,如果将经常使用的程序块减少移动次数,便可解决这问题。
暂且只考虑到此,其中较为重要的缺页中断处理,以后再说。
2) 虚拟内存如何扩展内存容量?
扩展方式有以下几种:
1. 页式管理
2. 二级页式管理
3. 倒排页表
4. 段式管理
5. 段页式管理
以下将结合图示(参考操作系统精髓与设计原理中文第6版)具体地描述各种扩展方式。