什么是虚拟内存
虚拟内存是计算机系统提供的一种内存管理技术
它给每个进程提供了一连续的虚拟地址空间,使得每一个进程具有独占主存的错觉,通过将内存扩展到硬盘空间,让程序可以拥有超过系统物理内存大小的可用内存空间
它定义了一个连续的虚拟地址空间,并且把内存扩展到了硬盘空间
虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能
对于没有映射到物理内存的页,可以在使用的时候将其装入物理内存
虚拟内存是计算机系统提供的一种内存管理技术,它给每个进程提供了一个一致的、私有的、连续的地址空间,把内存扩展到了硬盘空间,让程序可以拥有超过物理内存大小的内存空间
虚拟内存的实现方式
虚拟内存中,允许将一个作业分多次调入内存。釆用连续分配方式时,会使相当一部分内存空间都处于暂时或永久的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此,虚拟内存的实需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式:
请求分页存储管理。
在分页管理基础上,添加了请求调页功能和页面置换功能
在程序运行时,只装入当前要执行的部分页,如果在后续运行过程中发现访问的页不存在于内存中的话,则由处理器通知操作系统按照对应的页面置换算法将相应的页面置换到主存中,将暂时不用的页置换到外存中
请求分段存储管理。
在分段管理基础上,添加了请求调段功能和分段置换功能
过程类似上述
请求段页式存储管理。
不管哪种方式,都需要有一定的硬件支持。一般需要的支持有以下几个方面:
一定容量的内存和外存。 页表机制(或段表机制),作为主要的数据结构。 中断机构,当用户程序要访问的部分尚未调入内存,则产生中断。 地址变换机构,逻辑地址到物理地址的变换。
请求分页和分页的主要区别在于是否在一开始就将所有的地址空间都装入内存
由于请求分页无需一次性装载,因此该方法可以提供虚拟内存