虚拟存储器

什么是虚拟存储器

当运行数据超过内存限度,部分数据自动“溢出”,这时系统会将硬盘上的部分空间模拟成内存——虚拟内存,并且将暂时不运行的程序或不使用的数据存放到虚拟内存中等待需要时调用

 

虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和来决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。可见,虚拟存储技术是一种性能非常优越的存储器管理技术,故被广泛地应用于大、中、小型和微型机器中。

 

现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间 。
 

32位系统只能寻址4G空间,64位则是128G

 

虚拟存储器的特征

虚拟存储器具有虚拟性、离散性、多次性及强对换性等特征,其中最重要的特征是虚拟性。

  (1)虚拟性。虚拟性是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际的内存容量,这是虚拟存储器所表现出的最重要的特征,也是虚拟存储器最重要的目标

  (2)离散性。离散性是指内存分配时采用离散分配的方式,没有离散性就不可能实现虚拟存储器。采用连续分配方式,需要将作业装入到连续的内存区域,这样需要连续地一次性申请一部分内存空间,以便将整个作业先后多次装入内存。如果仍然采用连续装入的方式,则无法实现虚拟存储功能,只有采用离散分配方式,才能为它申请内存空间,以避免浪费内存空间。

  (3)多次性。多次性是指一个作业被分成多次调入内存运行。作业在运行时,只将当前运行的那部分程序和数据装入内存,以后再陆续从外存将需要的部分调入内存。

  (4)对换性。对换性是指允许在作业运行过程中换进换出。允许将暂时不用的程序和数据从内存调至外存的对换区,以后需要时再从外存调入到内存。

虚拟存储器的实现方法

 虚拟存储器的实现都是建立在离散分配存储管理方式的基础上,目前的实现方法主要有以下两种。

  (1)请求分页系统

  请求分页系统是在分页存储管理方式的基础上增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统。程序启动运行时装入部分用户程序页和数据页,在以后的运行过程中,访问到其他逻辑页时,再陆续将所需的页调入内存。请求调页和置换时,需要页表机构、缺页中断机构、地址变换机构等软硬件支持。

  (2)请求分段系统

  请求分段系统是在分段存储管理方式的基础上增加了请求调段及分段置换功能而形成的段式虚拟存储系统,只需装入部分程序和数据进程即可启动运行,以后出现缺段时再动态调入。实现请求分段同样需要请求分段的段表机制、缺段中断机构、地址变换机构等软硬件支持。

参考文献

 https://wiki.mbalib.com/wiki/%E8%99%9A%E6%8B%9F%E5%AD%98%E5%82%A8%E5%99%A8

https://my.oschina.net/u/4280449/blog/3597696

计算机主存,内存,外存,辅存,缓存,虚拟内存之间的关系

一、主存就是内存:是直接与CPU交换信息的存储器,指CPU能够通过指令中的地址码直接访问的存储器,常用于存放处于活动状态的程序和数据

主存又分为随机存储器(random access memory)和只读存储器(read only memory)

(1)在执行期间程序的数据放在主存内,各个存储单元的内容可通过指令随机访问,这样的存储器称为随机存取存储器(RAM)。

另一种存储器叫只读存储器(ROM),里面存放一次性写入的程序或数据,仅能随机读出。RAM和ROM共同分享主存储器的地址空间。 

二、辅存就是外存: 硬盘与磁盘、光盘、软盘、U盘等。

三、缓存:缓冲寄存器

在CPU同时处理很多数据,而又不可能同时进行所有数据的传输的情况,把优先级低的数据暂时放入缓存中等优先级高的数据处理完毕后再把它们从缓存中拿出来进行处理

四、虚拟内存

当运行数据超过内存限度,部分数据自动“溢出”,这时系统会将硬盘上的部分空间模拟成内存——虚拟内存,并且将暂时不运行的程序或不使用的数据存放到虚拟内存中等待需要时调用