(计算机组成原理)虚拟存储器

虚拟存储器的容量是虚拟的,实际上并没有这么多容量,之所以能达到这么大容量,是因为借用了外存的存储空间,把当前不需要访问的数据存放在外存,用内外存数据倒换的时间消耗来换取更大的逻辑存储空间。

  • 虚拟存储器是一个逻辑模型,并不是一个实际的物理存储器。
  • 虚拟存储器必须建立在主存-辅存结构基础上,虚拟存储器允许使用比主存容量大得多的地址空间,并不是虚拟存储器最多只允许使用主存空间;虚拟存储器每次访问时,必须进行虚实地址变换,而非虚拟存储器则不必。
  • 虚拟存储器的作用是分割地址空间,解决贮存的容量问题和实现程序的重定位。
  • 虚拟存储器和Cache都基于程序局部性原理。两者的相同点:都把程序中最近常用部分驻留在高速的存储器中;一旦这部分不用再送回低速存储器。这种换入换出操作都是由操作系统或者硬件完成,对用户透明。

                                                                               两者的不同点:​​​Cache用硬件实现,虚拟存储器用操作系统和硬件相结合实现;Cache是一个物理存储器,虚拟存储器是一个逻辑存储器,其物理结构建立在主存-辅存结构上。

虚拟存储器的大小应该由哪些因素决定?

例如,32位地址总线的计算机,虚拟存储器的大小为4GB,但实存未必有这么大,实存由计算机的内存条大小决定,如插1G的内存条,内存就是1GB。如果我要编制一个程序,空间大小为4GB,那剩下的3GB从何而来?虚拟存储器的大小虽说可以随意调节(最大可以调节主存+磁盘总容量),不由地址线决定。但那么大的虚拟存储器没有意义,例如地址线32根,最多只能找到4GB个存储单元大小的空间,那设置成100G的虚拟存储空间毫无意义,因为根本找不到那部分的地址单元。因此统一化虚拟存储器的容量由计算机地址总线数量决定。


页式虚拟存储器

页式虚拟存储器就是将其基本单位划分为页,且将主存的物理空间划分为虚拟存储器等长的页。划分的页称为页面,主存的页称为实页,虚拟存储器的页称为虚页 

优点:由于页面的起点,终点地址是固定的,因此页表简单,调入方便,主存空间浪费小

缺点:由于页面不是逻辑上的独立实体,因此处理,保护和共享都不如段式虚拟存储器方便。

段式虚拟存储器

段式虚拟存储器是一种将主存按段分配的存储管理方式,各段的长度因程序而异。段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立部分,系统的基本信息传送单位为段,并通过地址变换机构实现访存过程。

优点:段的分界与程序的自然分界相对应;段的逻辑独立性使它易于编译,管理,修改和保护,也便于多道程序共享;某些类型的段(堆栈,队列)具有动态可变长度,允许自由调度以便于有效利用主存空间。

缺点:段的长度各不相同,段的起点和终点不定,給主存空间分配带来麻烦,造成空间浪费。

段页式虚拟存储器

段页式虚拟存储器是段式虚拟存储器和页式存储器的结合。

在这种方式中,把程序按逻辑单位分段之后,再把每个段分成固定大小的页。程序对主存的调入/调出是按页面进行的,但它又可以按段实现共享和保护。

优点:兼备页式存储器和段式虚拟存储器的优点 。

缺点:在地址映射过程中需要多次查表

TLB(快表)

在虚拟存储器中,如果不采取有效措施,访存速度就会大大降低,这是因为在页式和段式虚拟存储器中,必须先查页表或段表,而在段页式虚拟存储器中既要差页表也要查段表。为了加快查找速度,利用程序在执行过程中具有局部性的特点(例如Cache),将页表分为快表与慢表。一般的页表称为慢表,放在主存中。将当前最常用的页表信息放在一个小容量的高速存储器中,称为快表。在访问页面时,在快表中查找对应的页表项,若找到了,则通过该页表项查找对应的页面;若在快表中未找到所需要的页面,则再到慢表中查找。综上分析,若TLB命中,则页表一定命中。


牛刀小试

1.对36位虚拟地址的页式虚拟存储系统,每页8KB,每个页表项为32位,页表的总容量为多少?

虚拟地址大小:36位=2^{^{36}}位共64GB

页表项数目:64GB/8KB=2^{36}/2^{13}=2^{23}

页表总容量=页表项数目×每个页表字节数=2^{23}\times \left ( 32/8\right )=2^{27}=32MB

2.某计算机主存地址空间大小为256MB,按字节编址。虚拟地址空间大小为4GB,采用页式存储管理,页面大小为4KB,TLB(快表)采用全相联映射,有4个页表项如图

                                                     

则对虚拟地址03FFF180H进行虚实地址变换的结果是()

 因为页面大小为4KB,所以页地址为12位。因此03FFF180H中的180H为页内地址,故页号为03FFFH查表得页框号为0153H,于是将页框号与页内地址进行拼接,既可以得到虚实地址变换的结果是0153180H。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值