一、虚拟存储技术
1.基本思想
利用大容量外存来扩充内存,产生一个比有限的实际内存空间大的多的、逻辑的虚拟内存空间,简称虚存。
采用二级存储器方式
是一种设计技巧,受外存容量的限制。
2.虚拟存储器需要硬件支持
(1)系统有容量足够大的外存
(2)系统有一定容量的内存
(3)实现虚-实转换的地址映射机制
3.工作原理
程序部分装入内存便可运行,其他部分需要运行时再装入内存。
4.与交换技术的区别
交换技术交换单位是进程
虚拟内存以页为单位进行交换
二、虚拟页式存储管理
1.物理页面和页面
物理页面:将内存分成大小相等的许多区,每个区称为一个“物理页面”。
页面:将程序中的逻辑地址也进行分页,页的大小和物理页面大小一致。
2.虚拟地址组成
三、物理内存的分配与回收
1.位示图
位示图中的每一位与一个物理块对应,其值为0/1,表示空闲/占用。
2.内存分配与回收
分配:在位示图中找出空闲物理页面数,如果能满足,则分配,并把相应位置为1,计算物理页面号。
物理页面号=字号*字长+位号
回收,当归还物理页面时,计算归还页面在位示图中对应的位置,将1改为0.
字号=【i/字长】,位号=i mod 字长
四、虚拟页式存储地址转换过程
1.页式存储管理的地址转换
页表:记录装入内存的逻辑页面与物理页面的对应关系。
是硬件进行地址转换的依据
硬件支持:页表始址寄存器和页表长度寄存器,分别用来存储正在运行程序的页表内存的起始地址和页表的长度。
地址转换过程:
(1)在执行检索前,先将页号与页表长度进行比较,若页号大于或等于页表长度,则地址越界。
(2)若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,则找到该表项在页表中的位置,找到该页的物理页号。
(3)将有效地址的页内地址送入物理地址寄存器的快内地址字段中。
十进制计算:
物理地址=物理页面号*块长+页内地址
二进制计算:
物理页面号作为绝对地址的高位地址,页内地址作为它的地址部分。
2.页表项
物理页面号:页面在内存对应的物理页面号
有效位:页面是在内存还是外存
访问位:页面在内存中是否被访问过
修改位:页面在内存中是否被修改过
保护位:页面能否读/写
3.页表
多级页表
散列页表
反置页表
4.转换检测缓冲区(TLB)
高速缓存,也称为块表,登记了页表中的部分页号和物理页面的对应关系。
地址转换过程及原理。
5.缺页异常处理
缺页异常:若在页表中发现所要访问的页面不在内存,则产生缺页异常。
处理:查看有无空闲页面,若有,把要访问的页面调入内存;若无,选择一页换出内存,再把要访问的页面调入内存。
6.页面调度策略
调入策略:决定什么时候将一个页由外存调入内存。两种方法:请求调页和预调页。
置页策略:当产生缺页时,将所调入的页面置于何处。
置换策略:如果内存已满,确定哪个页面从内存中移出,为新的页面腾出空位。三种方法:固定分配局部置换、可变分配全局置换、可变分配局部置换。
7.页面置换算法
“抖动”或“颠簸”:刚被换出的页面又立即要用,把它装入内存后,不久又被换出,换出不久又被调入内存,如此反复,使调度非常频繁。这种现象称为“抖动”或“颠簸”。
算法:OPT、FIFO、第二次机会页面置换算法、CLOCK、LRU算法。
(1)OPT--理想页面置换算法
由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的,或者是在最长(未来)时间内不再被访问的页面。采用OPT算法,通常可保证获得最低的缺页率。
(2)FIFO--先进先出
总是选择最先装入内存的页面调出,或者说把驻留在内存时间最长的那一页调出。
(3)LRU--最近最少使用
总是选择距离现在最长时间内没有被访问过的页面先调出。
8.缺页率
缺页率计算:
f=F/A
F为缺页次数,A为页面总访问次数
影响缺页率的因素:
(1)分配给程序的物理页面数
(2)页面的大小
(3)程序编制方法
(4)页面调度算法
五、虚拟页式存储管理的优点缺点
优点:
不要求进程的程序段和数据段在内存中连续存放,有效解决了碎片问题,提高了内存利用率
缺点:
存在页面空间的浪费,程序的最后一页往往有一部分得不到利用。
六、虚拟存储管理的性能问题
(1)颠簸问题
缺页率高引起,如页面置换算法不合理。
“活动”页面:进程在一段时间内集中访问的一些页面,与程序的局部性有关。
如果分配给进程的物理页面少,则活动页面不能全部装入内存,可能频繁产生缺页,从而导致颠簸。
(2)工作集模型
工作集:对于给定的进程访问序列,从一个时刻到另一个时刻之间所访问页面的集合,称为该进程的工作集。
采用工作集模型可以解决颠簸问题
解决方法:操作系统为每一个进程保持一个工作集,并为该进程提供与工作集大小相等的物理页面数,这一过程可动态调整。