1. 虚拟存储的需求背景
- 计算机系统经常出现内存不够用
内存不够用常常是由操作系统内部多进程,多线程并发下提高的导致的情况,为了解决内存不够用的情况,有一下三种方法可以避免。
覆盖:应用程序手动把需要的指令和数据保存在内存中。比如我的代码在内存中存储不下了,我可以根据代码之间的逻辑关系分块,将他们复用到一块区域来,但当你要用时,在放到内存中。
缺点:应用开发难,调用关系复杂
交换:操作系统自动把暂时不能执行的程序保存到外存中。
缺点:每次都是将一个进程移除到外存,导致时间开销,空间开销很大。
虚拟存储:在有限的内存中,以页为单位,自动装入更多更大的程序,与前面两种方法相比,更自动,空间和容量也更大,
2 虚拟存储的基本概念
思路
将不常用的内存块暂存到外存原理
装载程序时,只将当前指令需要的部分页面或段装入内存。
原来时程序全部装在内存,及其浪费空间,采用这种方式,减轻了内存负担指令执行时,需要的指令和数据不在内存中时(称为缺页或缺段),处理器通知操作系统将相应的页面载入内存,
- 操作系统将暂时不用的的页面或段保存到外存。具体那些是闲置内存块,需要用置换算法得出,后面会解释。如果只进不出,那么,内存迟早会被装满,负担不起程序的空间开销。虚拟内存管理也就意义不大。
这种需要什么,装在什么,将当前闲置内存块加载到外存,既加快了指令执行速度,又扩大了内存的使用。
实现方式
- 虚拟页式存储
- 虚拟页式存储
技术支持
硬件:提供页面或短时存储中的地址转换机制,
操作系统:管理内存和外存见页面和段的换入和换出,具体装谁,又操作系统决定
虚拟内存特点:
1 不连续
物理内存分配非连续
虚拟地址空间非连续2 大用户空间
提供给用户的虚拟内存可大于实际物理内存3 部分交换
虚拟存储只对部分虚拟地址进行调入调出