想理解虚拟内存,首先要说一下传统内存,对比一下,更好理解其然所以然。
传统存储管理方式的特征
-
一次性
操作和数据必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生:
A、当数据量很大,不能全部被装入内存时,将使该程序无法运行;
B、当大量程序要求运行时,由于内存不足以容纳所有数据,只能使少数程序先运行,导致多道程序度的下降。 -
驻留性
操作和数据被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束。
由以上特性可知,许多在程序运行中不用或暂时不用的程序(数据)占据了大量的内存空间,而一些需要运行的作业又无法装入运行,显然浪费了宝贵的内存资源。
虚拟存储器的定义和特征
基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。
- 多次性
是指无需在程序运行时一次性地全部装入内存,而是允许被分成多次调入内存运行。 - 对换性
是指无需在程序运行时一直常驻内存,而是允许在程序的运行过程中,进行换进和换出。 - 虚拟性
是指从逻辑上扩充内存的容量,使用户所看到的内存容量,远大于实际的内存容量。
虚拟内存技术的实现
虚拟内存中,允许将一个程序分多次调入内存。釆用连续分配方式时,会使相当一部分内存空间都处于暂时或假永久的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此,虚拟内存的实需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式:
1)请求分页存储管理。
2)请求分段存储管理。
3)请求段页式存储管理。
不管哪种方式,都需要有一定的硬件支持。一般需要的支持有以下几个方面:
1)一定容量的内存和外存。
2)页表机制(或段表机制),作为主要的数据结构。
3)中断机构,当用户程序要访问的部分尚未调入内存,则产生中断。
4)地址变换机构,逻辑地址到物理地址的变换。