计算机组成原理:3.7虚拟存储器

3.7虚拟存储器

思维导图

在这里插入图片描述

虚拟存储器的基本概念

虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,用户可以在里面进行自由编址,而不需要在乎实际的主存容量和程序存放的位置

虚拟地址比实际地址大

过程

  • CPU使用虚地址时,由复制硬件扎到虚地址和实地址之间的对应关系,并判断虚地址对应的存储单元是否已装入内存。

    • 如果已装入内存:通过地址变换,cpu可以直接当我主存指示的实际单元
    • 如果不存在主存中:则把包含这个字的一页或一段调入主存后再由CPU访问
    • 如果主存已满,采用替换算法置换主存的一页或一段

页式虚拟存储器

以页为基本单位的虚拟存储器称为页式虚拟存储器。

虚拟地址=虚页号+业内地址

页表(将虚拟地址转换到物理地址):是一张存放在主存中的虚拟号和实页号的对照表,记录程序的虚页调入主存时被安排在主存中的位置。页表一般长久地保存在内存中。

组成:

  • 有效位(装入位)

    • 表示对应页面是否在主存

      • 1:则表示该虚拟页已从外存调入主存,此时页表项存放该页的物理页号
      • 0:没有调入主存,此时页表项可以存放该页的磁盘地址
  • 脏位(修改位)

    • 表示页面是否被修改过
    • 虚拟机制采用写回策略
    • 利用脏位可判断替换时是否需要写回磁盘
  • 引用位

    • 设置替换策略

优缺点:

  • 优点:页面的长度固定,页表简单,调入方便。
  • 缺点:由于程序不可能正好是页面的整数倍,最后一页的零头将无法利用而造成浪费,并且页不是逻辑上独立的实体所以处理、保护和共享都不及段式虚拟存储器方便

快表(TLB):加快地址转换

把经常访问的页表放入高速缓冲存储器中(快表)

地址转换时先查找快表

快表通常采用全相连或组相联方式

TLB项由页表内容+一个TLB标记字段

  • TLB标记的内容

    • 全相联:该页表项对应的虚页号
    • 组相联:虚页号的高位部分,而虚页号的低位部分用于选择TLB的组索引(操作系统3.2.7)

具有Cache和TLB的虚拟存储系统中,CPU一次访存操作可能涉及TLB,页表,Cache 、主存和磁盘的访问。

CPU访问过程中存在三种缺失情况

  • TLB缺失:要访问的页面对应的页表项不在TLB中
  • Cache缺失:要访问的主存快不在Cache中
  • 缺页Page:要访问的页面不在主存中

段式虚拟存储器

按照程序的逻辑结构划分,各段长度因程序而异

虚拟地址:段号、段内地址

变换:虚地址到实地址由段表实现

过程:CPU根据虚拟地址访存时,首先根据段号与段表基地址拼接成对应的段表行,然后根据该段表行的装入位判断该段是否已调入主存(装入位为“1”,表示该段已调入主存;装入位为“0”,表示该段不在主存中)。已调入主存时,从段表读出该段在主存中的起始地址,与段内地址(偏移量)相加,得到对应的主存实地址。

优点:段的分界与程的自然分界相对应,因而具有逻辑独立性,使得它易于编译、管理、修改和保护,也便于多道程序共享

缺点:因为段长度可变,分配空间不便,容易在段间留下碎片,不好利用,造成浪费

段页式虚拟存储器

程序按逻辑结构分段,每段再划分为固定大小的页,主存也划分为大小相等的页

程序对主存的调入调出以页为基本单位

每个程序对应一个段表,每段对应一个页表,段的长度是页长的整数倍,段的起点是某一页的起点

虚地址:段号、段内页号、页内地址

优点:兼具页式和段式虚拟存储器的优点,可以按段实现共享和保护

缺点:地址变换过程中需要两次查表,系统开销较大

过程:CPU根据虚地址访存时,首先根据段号得到段表地址;然后从段表中取出该段的页表起始地址,与虚地址段内页号合成,得到页表地址;最

虚拟存储器与Cache的比较

相同之处

不同之处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wvdon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值