关于虚拟内存
虚拟存储技术
虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
拟内存又叫虚拟存储器,电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入分页文件可释放RAM,以便完成工作。 一般而言,计算机的RAM容量越大,程序运行得越快。若计算机的速率由于RAM可用空间匮乏而减缓,则可尝试通过增加虚拟内存来进行补偿。但是,计算机从RAM读取数据的速率要比从硬盘读取数据的速率快,因而扩增RAM容量(加内存条)是最佳选择。
虚拟内存是Windows 为作为内存使用的一部分硬盘空间。虚拟内存在硬盘上其实就是为一个硕大无比的文件,文件名是PageFile.Sys,通常状态下是看不到的。必须关闭资源管理器对系统文件的保护功能才能看到这个文件。虚拟内存有时候也被称为是“页面文件”就是从这个文件的文件名中来的。
原理
装载程序的时候,仅将当前需要执行的页面或者段装入内存;
执行过程中所需要的程序或者数据不在内存,则将相应的页或者段调入内存;
将暂时不用的页或者段保存到外存中。(其中包含着交换技术)
实现方式:
虚拟页式存储方式和虚拟段式存储方式。
页表机制
缺页中断机构
每当所要访问的页面不在内存时,便产生缺页中断,请求系统将所缺之页调入内存。
缺页中断的特点:
- 在指令执行期间产生和处理中断信号,而非通常的在指令执行完之后检测处理中断。
 - 一条指令在执行期间,可能产生多次缺页中断。
 
地址变换机构
页面置换算法
最佳(Optimal)置换算法
选择换出的页面,将是以后永不使用的或在最长(未来)时间内不再被访问的页面。因无法预知哪个页面永远不再使用或者最长时间不再被访问,所以这是一种理想算法。
先进先出(FIFO)置换算法
总是将最先进入内存的页面换出,或者说选择在内存中驻留时间最长的页面换出。
基于队列类的算法
最近最久未使用(LRU)置换算法
选择最近最久未使用的页面换出,是一种用“最近的过去”作为“最近的将来“的估计方法。
基于堆栈类的算法
| 页号 | 框号 | 状态号P | 访问字段 |修改位M | 外存地址 |
具体方法:用访问字段来记录一个页面自上次被访问以来所经历的时间t,当要换出一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面换出。
Clock置换算法
访问页面时,在页表项中记录下访问情况:缺页时,从上一次查找结束的位置顺序查找未被访问的页面换出。
| 页号 | 框号 | 状态号P | 访问位 |修改位M | 外存地址 |
具体方法:页表中增加访问位,用来描述过去一段时间的访问情况,各个页面组织成循环链表,用一个指针指向最先调入的页面。指针扫描循环链表,找到第一个未被访问的页面换出。
固定分配局部置换
为每个进程分配固定数目的页框(物理块),假设n个,如果发生缺页,则只能从这n个中选出一个换出。
这种方法难以确定n的大小。n太小,则缺页频繁,系统吞吐量低;n太大,则内存中能够驻留的进程数量少,系统并行效率低。
可变分配全局置换
系统保持一个空闲页框队列,为进程分配内存时首先给进程分配一定量的页框,当发生缺页时,系统从空闲页框队列取出一个进程,并将缺页装入。
当空闲页框队列中的页框用完时,系统才能从内存中选择一页调出,该页可能是系统中任一进程的页,因此叫全局替换。
可变分配局部置换
首先为每个进程分配一定数目的页框,发生缺页时,只允许从该进程在内存的页面中换出一页。
若换页频繁,系统会适当的增加进程的页框数。若缺页率很低,则系统会适当减少进程的页框数目。
驻留集
给进程分配的所有页框的集合。
抖动和工作集
抖动
如果多道程度过高,导致过于频繁地页面换入换出,使得调度页面的耗时比进程实际运行的时间还多,系统效率急剧下降称之为抖动。
产生原因:内存中并行的进程过多,每个进程分到的页框过少,缺页频繁,页面换入换出耗时过大,导致CPU利用率过低,调度程序误以为CPU利用率低的原因是并行度不够高,就会增加多道程序的度,使得新进程进一步装入内存,反而进一步导致CPU利用率下降。
工作集
在当前一段时间内使用的页面的集合。
描述工作集的二元函数:W(t,△),当前一段时间内使用的页面集合。
根据工作集的大小系统来调整分配进程的页框数。一般进程分得的页框数应大于工作集大小。
查看12道真题和解析