...系统被设计成将主存储器和后备存储器组合在一起,在程序员看来好像只有一级存储,必须进行的地址变换是自动完成的。
Kilburn et aL(1962)
(操作系统和相应的辅助的硬件来完成地址变换或数据的交换)
虚存系统:
由价格较贵、速度较快、容量较小的主存储器M1和一个价格低廉、速度较慢、容量很大的辅助存储器M2(通常是硬盘)组成。
在系统软件和辅助硬件的管理下,就像一个单一的、可直接访问的大容量主存储器
程序员可以用机器指令的地址码对整个程序统一编址,就如同应用程序员具有对应于这个地址码宽度的存储空间(称为程序空间)一样,而不必考虑实际主存空间的大小。
1.虚拟存储器的特点
程序员可以利用巨大的逻辑空间,而不必做存储管理工作
多个进程可以共享主存空间
采用动态再定位,简化了程序的装入
2.虚存管理方式
分两类:页式和段式
页式虚存把空间划分为大小相同的块,称为页面。常用页大小为4KB~64KB
段式虚存把空间划分为可变长的块,称为段。段最小长度为1个字节,最大因机器而异,常为2的16次方B~2的32次方B
页面是对空间的机械划分,而段则往往是按程序的逻辑意义进行划分。
采用页式虚存还是段式虚存对CPU有不同的影响。
页式虚存:地址是单一的、固定长度的地址字,由页号和页内位移两部分组成。
段式虚存:地址需要用两个字表示,一个为段号,另一个为段内位移。因为段的长度是可变的。
段页式:每段被划分成若干个页面。既保持了段作为逻辑单位的优点,又简化了替换的实现,而且段不必作为整体全部一次调入主存,而是可以以页面为单位部分调入。
3.存储层次中Cache和虚存的对比
虚存处于“主存-辅存”层次
与“cache-主存”层次的相似点
都是分块方式:cache块、页、段
都有失效问题:cache块失效、页故障、地址故障
与“cache-主存”层次的不同点
失效替换:cache由硬件完成,虚存主要由OS
处理器地址大小决定虚存大小,但与cache大小无关
辅存除用作主存的后备存储器外,还用于文件系统(辅存上只是开辟一块作为虚存)
5.有关虚拟存储器的四个问题
映象规则
全相联,以降低失效率为主要目标。
查找算法
页表,段表,TLB
页表和段表:索引页号或段号的数据结构,含有所要查找的块的物理地址
段式系统:段内位移加上段的物理地址就是最终的物理地址
页式系统:只需简单地将页内位移拼接在相应页面的物理地址之后
替换算法
LRU
尽可能减少页故障,OS为每个页面设置“使用位”。
写策略
写回法
块表TLB
1.TLB(Table Look-aside buffer)
TLB是一个专用的高速缓冲器,用于存放近期经常使用的页表项
TLB中的内容是页表部分内容的一个副本
TLB页利用了局部性原理
2.Alpha Axp 21064的地址转换过程
3.TLB一般比Cache的标识存储器更小、更快
进程保护和虚存实例
进程:程序呼吸所需的空气及生存的空间
1.进程保护
(1)界地址寄存器
基地址,上界地址
检测条件:(基地址+地址)<= 上界地址
(2)虚拟存储器
给每个页面增加访问权限标识
(3)环形保护
(4)加锁和解锁