《chp9_虚拟存储器.ppt》由会员分享,可在线阅读,更多相关《chp9_虚拟存储器.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器一、虚拟存储器的基本概念1、实地址与虚地址:用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地地或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器2、虚存的访问原理 虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。每次访存时,首先判断该虚地址所对应的部分是否
2、在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。由此可见,每个程序的虚地址空间可以远大于实地址空间,也可以远小于实地址空间。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器3、cache与虚存的异同l从虚存的概念可以看出,主存辅存的访问机制与cache-主存的访问机制是类似的。这是由cache存储器、主存和辅存构成的三级存储体系中的两个层次。lcache和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。cache和主存构成了系统的内存,而
3、主存和辅存依靠辅助软硬件的支持构成了虚拟存储器。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器在三级存储体系中,cache-主存和主存-辅存这两个存储层次有许多相同点:(1)出发点相同出发点相同二者都是为了提高存储系统的性能价格比而构造的分层存储体系,都力图使存储系统的性能接近高速存储器,而价格和容量接近低速存储器。(2)原理相同原理相同都是利用了程序运行时的局部性原理把最近常用的信息块从相对慢速而大容量的存储器调入相对高速而小容量的存储器。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器但cache主存和主存辅存这两个存储层次也有许多不同之处:(1)侧重点不
4、同侧重点不同cache主要解决主存与CPU的速度差异问题;而就性能价格比的提高而言,虚存主要是解决存储容量问题,另外还包括存储管理、主存分配和存储保护等方面。(2)数据通路不同数据通路不同CPU与cache和主存之间均有直接访问通路,cache不命中时可直接访问主存;而虚存所依赖的辅存与CPU之间不存在直接的数据通路,当主存不命中时只能通过调页解决,CPU最终还是要访问主存。(3)透明性不同透明性不同cache的管理完全由硬件完成,对系统程序员和应用程序员均透明;而虚存管理由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储管理的系统程序员不透明,而只对应用程序员透明(段式和段页式
5、管理对应用程序员“半透明”)。(4)未命中时的损失不同未命中时的损失不同由于主存的存取时间是cache的存取时间的510倍,而主存的存取速度通常比辅存的存取速度快上千倍,故主存未命中时系统的性能损失要远大于cache未命中时的损失。计算机科学与技术学院计算机系 9.4 9.4 虚拟存储器虚拟存储器4、虚存机制要解决的关键问题(1)调度问题决定哪些程序和数据应被调入主存。(2)地址映射问题在访问主存时把虚地址变为主存物理地址(这一过程称为内地址变换);在访问辅存时把虚地址变成辅存的物理地址(这一过程称为外地址变换),以便换页。此外还要解决主存分配、存储保护与程序再定位等问题。(3)替换问题决定哪
6、些程序和数据应被调出主存。(4)更新问题确保主存与辅存的一致性。l在操作系统的控制下,硬件和系统软件为用户解决了上述问题,从而使应用程序的编程大大简化。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器二、页式虚存存储器1、页式虚存地址映射 页式虚拟存储系统中,虚地址空间被分成等长大小的页,称为逻辑页;主存空间也被分成同样大小的页,称为物理页。相应地,虚地址分为两个字段:高字段为逻辑页号,低字段为页内地址(偏移量);实存地址也分两个字段:高字段为物理页号,低字段为页内地址。通过页表可以把虚地址(逻辑地址)转换成物理地址。l页式虚拟存储器的地址映射过程见下图。计算机科学与技术学院计
7、算机系页式虚拟存储器的地址映射过程见下图页式虚拟存储器的地址映射过程见下图计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器l在大多数系统中,每个进程对应一个页表。页表中对应每一个虚存页面有一个表项,表项的内容包含该虚存页面所在的主存页面的地址(物理页号),以及指示该逻辑页是否已调入主存的有效位。l每个进程所需的页数并不固定,所以页表的长度是可变的,因此通常的实现方法是把页表的基地址保存在寄存器中,而页表本身则放在主存中。由于虚存地址空间可以很大,因而每个进程的页表有可能非常长。例如,如果一个进程的虚地址空间为2G字节,每页的大小为512字节,则总的虚页数为231/29=222。
8、计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器l为了节省页表本身占用的主存空间,一些系统把页表存储在虚存中,因而页表本身也要进行分页。当一个进程运行时,其页表中一部分在主存中,另一部分则在辅存中保存。l另一些系统采用二级页表结构。每个进程有一个页目录表,其中的每个表项指向一个页表。l在页表长度较大的系统中,还可以采用反向页表实现物理页号到逻辑页号的反向映射。页表中对应每一个物理页号有一个表项,表项的内容包含该物理页所对应的逻辑页号。访存时,通过逻辑页号在反向页表中逐一查找。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器2、转换后援缓冲器l由于页表通常在主存中
9、,因而即使逻辑页已经在主存中,也至少要访问两次物理存储器才能实现一次访存,这将使虚拟存储器的存取时间加倍。为了避免对主存访问次数的增多,可以对页表本身实行二级缓存,把页表中的最活跃的部分存放在高速存储器中,组成快表。这个专用于页表缓存的高速存储部件通常称为转换后援缓冲器(TLB)。保存在主存中的完整页表则称为慢表。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器lTLB的地址映射过程见图计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器l内页表和外页表 页表是虚地址到主存物理地址的变换表,通常称为内页表。与内页表对应的还有外页表,用于虚地址与辅存地址之间的变换。当
10、主存缺页时,调页操作首先要定位辅存,而外页表的结构与辅存的寻址机制密切相关。例如对磁盘而言,辅存地址包括磁盘机号、磁头号、磁道号和扇区号等。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器三、段式虚拟存储器和段页式虚拟存储器1、段式虚拟存储器:段是按照程序的自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。在段式虚拟存储系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含下面三个字段:(1)
11、有效位:指明该段是否已经调入实存。(2)段起址:指明在该段已经调入实存的情况下,该段在实存中的首地址。(3)段长:记录该段的实际长度。设置段长字段的目的是为了保证访问某段的地址空间时,段内地址不会超出该段长度导致地址越界而破坏其他段。段表本身也是一个段,可以存在辅存中,但一般是驻留在主存中。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器2、段式虚地址向实存地址的变换过程见图计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器3、段式虚拟存储器特点l段式虚拟存储器有许多优点:段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。段长可以根据需要动态改变,
12、允许自由调度,以便有效利用主存空间。l段式虚拟存储器也有一些缺点:因为段的长度不固定,主存空间分配比较麻烦。容易在段间留下许多外碎片,造成存储空间利用率降低。由于段长不一定是2的整数次幂,因而不能简单地像分页方式那样用虚地址和实地址的最低若干二进制位作为段内偏移量,并与段号进行直接拼接,必须用加法操作通过段起址与段内偏移量的求和运算求得物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。计算机科学与技术学院计算机系段式管理计算机科学与技术学院计算机系页式管理计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器4、段页式虚拟存储器l段页式虚拟存储器是段式虚拟存储器和页式
13、虚拟存储器的结合。l实存被等分成页。每个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操作,但可按段进行编程、保护和共享。计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器【例1】假设有三道程序,基号用A、B和C表示,其基址寄存器的内容分别为SA、SB和SC。程序A由4个段构成,程序C由3个段构成。段页式虚拟存储系统的逻辑地址到物理地址的变换过程如图所示。在主存中,每道程序都有一张段表,A程序有4段,C程序有3段,每段应有一张页表,段表的每行就表示相应页表的起始位置,而页表内的每行即为相应的物理页号。请说明虚实地址变换过程。计算机科学与技术学院计算机系
14、计算机科学与技术学院计算机系l可以看出,段页式虚拟存储器的缺点是在由虚地址向主存地址的映射过程中需要多次查表,因而实现复杂度较高计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器四、虚存的替换算法 虚拟存储器的替换算法与cache的替换算法类似,有FIFO算法、LRU算法、LFU算法等,下面通过示例来说明过程。计算机科学与技术学院计算机系【例2】假设主存只允许存放a、b、c三个页面,逻辑上构成a进c出的FIFO队列。某次操作中进程访存的序列是0,1,2,4,2,3,0,2,1,3,2(虚页号)。若分别采用FIFO算法、FIFO+LRU算法,请用列表法分别求两种替换策略情况下主存的
15、命中率。解:可以参见Cache中例子计算机科学与技术学院计算机系9.4 9.4 虚拟存储器虚拟存储器l虚拟存储器的替换算法与cache的替换算法不同的是:(1)cache的替换全部靠硬件实现,而虚拟存储器的替换有操作系统的支持。(2)虚存缺页对系统性能的影响比cache未命中要大得多,因为调页需要访问辅存,并且要进行任务切换。(3)虚存页面替换的选择余地很大,属于一个进程的页面都可替换。计算机科学与技术学院计算机系完成虚地址向主存 实地址的变换装入位为“1”,按主存 实地址np访问主存装入位为“0”,产生 页面失效中断,中断 处理程序到辅存中调页外部地址变换到辅存中选页选出页经过I/O处理机
16、或通道进入主存所需页未装入辅存,进入 中断,进行出错处理查实存页表,确定调入页 进入主存的页面位置主存未满,找到空页面 主存已满,通过替换 算法寻找替换页 确定的实页号进入通道 已修改的被替换页面 送回辅存11 121314计算机科学与技术学院计算机系9.5 存存 储储 保保 护护一、存储区域保护 任何软件都存在着出现错误的可能。一旦程序出错,应尽量将错误的影响限制在最小范围内。当多个用户共享主存时,应防止由于一个用户的程序有意或无意破坏其他用户的程序和系统软件,以及一个用户程序非法地访问不是分配给它的主存区域。在虚拟存储系统中,通常采用页表保护、段表保护和键保护等方法。计算机科学与技术学院计算机系9.5 存存 储储 保保 护护1、页表保护和段表保护l原理见图计算机科学与技术学院计算机系9.5 存存 储储 保保 护护2、键保护方式计算机科学与技术学院计算机系9.5 存存 储储 保保 护护3、环保护方式计算机科学与技术学院计算机系9.5 存存 储储 保保 护护二、访问方式保护对主存信息的使用可以有三种方式:读(R)、写(W)和执行(E),相应的访问方式保护就有R、W、E三种方式形成的逻辑组合。