目录:
一、概述:
什么是虚拟存储器?
虚拟存储器就是使用虚拟技术从逻辑上对存储器进行扩充。
那么为什么要引入虚拟存储器?
在回答这个问题之前,我们先介绍一个定理——局部性原理!
局部性原理:
一次性和驻留性严重地降低内存的利用率,显著地减少了系统吞吐量 !
——一次性:程序在运行时一次性装入内存中。
——驻留性:程序一旦装入内存之后便一直驻留到程序运行结束;或者是因I/O而长期等待,又或者是运行一次之后,就不再需要运行了;但是它们将占据着宝贵的内存资源。
研究表明,程序在执行过程中呈现局部性原理(体现在时间和空间两方面)。
——时间局部性:一条指令被执行后,那么它可能很快会再次被执行(循环结构) 。
——空间局部性:若某一存储单元被访问,那么与该存储单元相邻的单元可能也会很快被访问(顺序结构)。
局部性原理使得虚拟存储技术的实现成为可能;一个程序特别是一个大型程序的一部分装入内存是可以运行的。
虚拟存储器:
虚拟存储器定义:
——所谓虚拟存储器,是指仅把作业的一部分装入内存便可运行作业的存储器系统。
——具体地说,所谓虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
——虚拟存储器并非可以无限大,其容量受外存大小和指令中地址长度两方面的限制。
虚拟存储器的特征:
——可以把一个程序分多次装入内存,每次仅装入当前运行需要使用的部分——多次性;
——在程序执行过程中,可以把当前暂不使用的部分换出内存,若以后需要时再换进内存——交换性/非驻留性;
——程序在内存中不必连续存放——离散性。
——虚拟存储器还有一个最重要的特征——虚拟性,从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。
二、分页虚拟存储管理方式 :
基本原理:
——分页虚拟存储管理方式是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的虚拟存储器系统。
——在分页虚拟存储管理时使用的页表,是在原来页表的基础上发展起来的,包括以下内容:物理块号、状态位、访问位、修改位、外存地址。
- 状态位:表示该页是否已经调入内存。
- 访问位:表示该页在内存期间是否被访问过。
- 修改位:表示该页在内存中是否被修改过。若未被修改,则在置换该页时就不用将该页写回到外存中,减少系统的开销和启动磁盘的次数;若被修改,则在置换该页时就必须将该页写回到外存中,以保证外存中所保留的数据始终是最新的副本。
- 外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时使用。
缺页中断机构:
每当要访问的页面不在内存时,便产生一缺页中断,请求操作系统把所缺页面调入内存。缺页中断作为中断,它同样需要经历诸如保护CPU现场环境、分析中断原因、转入缺页中断处理程序进行处理、恢复CPU环境等几个步骤。
缺页中断与与一般的中断的区别:
——在指令执行期间产生和处理中断信号。
——一条指令在执行期间,可能产生多次缺页中断。
(个人理解:因为虚拟存储技术,使得程序不再是一次性全部调入内存中,所以在执行的时候才知道所用的页面是否已在内存中,若不在则需要操作系统把它调进内存,可能恰逢多个页面不在内存中,所以可能会缺页中断多次。)
地址变换机构:
从总体来说:在分页存储管理方式中的地址变换机构的基础上,增加了产生和处理缺页中断,以及从内存中换入换出一页等功能。
具体过程: