一.虚拟存储器
1.基本知识
主存和辅存共同构成了虚拟存储器,二者在硬件和系统软件的共同管理下工作。对于应用程序员而言,虚拟存储器是透明的。虚拟存储器具有主存的速度和辅存的容量。
2.基本概念
虚拟存储器将主存或辅存的地址空间统一编址, 形成个庞 大的地址空间,在这个空间内,用户可以自由编程,而不必在乎 实际的主存容量和程序在主存中实际的存放位置。
用户编程允许涉及的地址称为虚地址或逻辑地址,虚地址对应的存储空间称为虚拟空间或程序空间。实际的主存单元地址称为实地址或物理地址,实地址对应的是主存地址空间,也称实地址空间。虚地址比实地址要大很多。
3.结构图和分类
分类:
- 页式存储器
- 段式存储器
- 段页式存储器
二.补充知识点
1.说明
本来这里是针对三种虚拟存储器技术进行详细介绍的,但是这三种虚拟存储器各自内容比较少,也很容易理解,这里就不一一列出,补充一个知识点即可。
2.补充
同时具有虚拟页式存储器(含TLB)和Cache系统访问顺序:TLB > 页表 > Cache > 主存 > 外存。
三.经典例题
-
为使虚拟存储系统有效地发挥其预期的作用,所运行程序应具有的特性是( )
A.不应含有过多的IO操作
B. 大小不应小于实际的内存容量
C.应具有较好的局部性
D.顺序执行的指令不应过多
解析:C。Cache和虚拟存储器技术的工作原理都是基于程序的局部性原理,提起特性,程序应当具备较好的局部性。 -
虚拟存储管理系统的基础是程序访问的局部性原理,此理论的基本含义是( )
A.在程序的执行过程中,程序对主存的访问是不均匀的
B.空间局部性
C.时间局部性
D.代码的顺序执行
解析:A。局部性原理的含义是在一个程序的执行过程中,其大部分情况下是顺序执行的,某条指令或数据使用后,在最近一段时间内有较大的可能再次被访问 (时间局部性):某条指令或数据使用后,其邻近的指令或数据可能在近期被使用(空间局部性)。在虚拟存储管理系统中,程序只能访问主存获得指令和数据,所以选项A正确,选项B、C、D均是局部性原理的一个方面而已。 -
关于虚拟存储器,下列说法中正确的是( )
I. 虚拟存储器利用了局部性原理V
II. 页式虚拟存储器的页面若很小,主存中存放的页面数较多, 导致缺页频率较低,换页次数减少,最终可以提升操作速度
III.页式虚拟存储器的页面若很大,主存中存放的页面数较少,导致页面调度频率较高,换页次数增加,降低操作速度
IV.段式虚规存储器中,段具有逻辑独立性,易于实现程序的编译、管理和保护,也便于多道程序共享
A. I、II、IV
B. I、II、 III
C. I、II、IV
D. I、III 、IV
解析:A。页式虚拟存储器中,页面若很小, 虚拟存储器中包含的页面数就会过多,使得页表的体积过大,导致页表本身占据的存储空间过大, 使操作速度变慢,因此II错误。
当页面很大时,虚报存储器中的页面数会变少,由于主存的容量比虚报存储器的容量小,主存中的页面数会更少,每次页面装人的时间会变长,每当需要较入新的页面时, 速度公交慢,因此III正确。
段式虚拟存储器是按照程序的逻辑性来设计的,具有易于实现程序的编译、 管理和保护,也便于多道程序共享的优点,因此IV正确。 -
某计算机主存地址空间大小为256MB,按字节编址。虚拟地址空间大小为4GB,采用页式存储管理页面大小为4KB),TLB (快表)采用全相联映射,有4个页表项, 内容如下表所示。
则对虚地地址 03FF F180H进行实地址变换的结果是( )
A. 015 3180H
B.003 518OB
C. TLB缺失
D.缺页
解析:A。按字节编址,页面大小为4KB,页内地址共12位。地址空间大小为4GB.虚拟地址共32位,前20位为页号。虚拟地址为03FF F180H,因此页号为03 FFH页内地址为180H。查找页标记03FFFH所对应的页表项,页框号为0153H,页框号与页内地址拼接即为物理地址015 3180H。
理解:这题才是今天的重点,理解这道题你虚拟存储器(计算机组成原理)这一块就理解了,操作系统中更详细,但现在只谈计算机组成原理。
四.虚拟存储器和Cache的比较
1.相同之处
- 最终目标都是为了提高系统性能,两者都有容量、速度、价格的梯度。
- 都把数据划分为小信息块,并作为基本的传递单位,成存系统的有真块更大
- 都有地址的映射、替换算法、更新策略等问题。
- 依据程序的局部性原理应用“快速缓存的思想”,将活跃的数据放在相对高速的部件中。
2.不同之处
- Cache主要解决系统速度,而虚拟存储器却是为了解决主存容量。
- Cache完全由硬件实现,是硬件存储器,对所有程序员透明;而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器, 对系经程许员不透明,但对应用程序员透明
- 对于不命中性能影响,因为CPU的速度的为Cade的10倍。主存的道度为硬盘的100倍以上,因此虚拟存储器系统不命中时对系统性能影响更大。
- CPU与Cache和主存都建立了直接访间的通路,面辅存与CPU没有直接道路,也就是说在Cache不命中时主存能和CPU直接通信,同时将数据调入Cache;而虚拟存储器系统不命中时,只能先由硬盘调入主存,而不能直接和CPU通信。
五.优缺点
5.1优点
-
提高内存利用率:虚拟存储器允许多个进程共享同一块物理内存,使得物理内存得到更有效的利用。
-
允许多道程序并发执行:通过虚拟存储器,可以将一部分不常用的数据存储到辅助存储器上,从而允许多个进程并发执行,并且每个进程都可以使用较大的虚拟内存空间。
-
提供了内存保护机制:通过在页表中设置相关标志位,操作系统可以实现对进程内存的保护,防止进程越界访问或者修改其他进程的内存。
-
支持内存共享:虚拟存储器允许多个进程共享同一块物理内存,这在IPC(进程间通信)中非常有用。
5.2缺点
-
增加了访问开销:因为虚拟存储器需要进行地址映射和磁盘I/O操作,所以访问虚拟内存的速度比访问物理内存慢。
-
可能导致频繁的磁盘读写:如果虚拟内存中的页面频繁被置换到磁盘上,就会导致频繁的磁盘读写操作,降低了系统性能。
-
需要复杂的页表管理:由于虚拟内存需要进行地址映射,所以操作系统需要维护一个复杂的页表结构来实现虚拟内存到物理内存的映射,这增加了操作系统的开销。
-
页面置换算法影响性能:虚拟存储器的性能很大程度上取决于页面置换算法的效率,不同的算法对应不同的优缺点,而且算法的选择也会受到特定应用程序的影响。
六.情况说明
本文和上一篇博客Cache技术存在许多相似的地方,可以一起理解,效果更佳!
高速缓存(Cache)知识点