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

计算机组成原理总目录

虚拟存储器

虚拟存储器主要解决的是用于解决存储数据的容量问题

例如在电脑的辅存磁盘中存放了几百GB甚至几TB的数据,包括几十个上百个程序
但我们在实际运行时,并不需要使用到所有的数据,而只需要用到其中一个或者两个程序
这是我们就可以将要用到数据读取到更快的主存中进行运行,提高程序的运行速度

同时,如果一个程序的大小超过了主存的大小,主存内的数据就会发生替换,使得主存的空间看起来很大,这也就是其虚拟的特性原理在这里插入图片描述

1. 分页

当我们需要将大小为4KB的程序A加载到主存时,会发现有可能找不到【可用且连续】的4KB空间,而这时就需要对数据进行分页处理 (该过程是由操作系统完成)

  • 分页:如下图中我们将程序划分为1KB为一【】,这样我们就无需去找连续的4KB空间,而是分散地将每一页加载到主存中

在这里插入图片描述
在这里插入图片描述

2. 页表

在进行分页后,我们能充分的利用主存中的零碎空间将程序A装入主存,但我们接下来该如何读取程序A呢?

  • 逻辑地址(虚地址):程序员所看到的虚拟地址,也称为绝对地址

  • 物理地址(实地址):数据在主存中的实际地址,也称为相对地址

    在这里插入图片描述


因为程序员写程序时所使用的都是逻辑地址,与实际的物理地址不一致
故我们需要一个表来记录逻辑页号与物理页号之间的联系,不仅如此页表还包括其他的信息
在这里插入图片描述

  • 脏位:用于写入时是否需要写回辅存
  • 有效位:表示页面是否已被调入主存中
  • 访问位:用于页面的替换算法(与Cache相关替换算法类似)
  • 辅存块号:数据在辅存中的位置
  • 主存块号:逻辑页号所放在主存中的位置
  • 逻辑页号:程序员所访问的逻辑位置

在这里插入图片描述

3. 页式存储的地址变换

在建立好页表后,我们就可以根据逻辑地址来读取程序A的数据在主存中的实际位置,流程如下

  • 第一步,获取逻辑地址中的页号
  • 第二步,获取页表的地址寄存器存放的页表地址
  • 第三步,在页表中根据页号查找物理页号
  • 第四步,将得到的物理页号拼接页内地址,从而得到最终的物理地址

在这里插入图片描述

4. 快表

因为页表实际上也是存储在主存上的,所以为了能更快的提高查表速度,故引入了快表机制
其原理和Cache相同,利用局部性原理,将频繁查找到的页表记录存储在查询速度更快的快表中,减少访问主存的次数
在这里插入图片描述

需要注意Cache和快表的不同之处

  • Cache:当我们直接访问主存的物理地址时,我们会通过访问Cache来减少访存次数
  • 快表:当我们访问的是程序的逻辑地址(而非物理地址),则我们需要将【逻辑地址转为物理地址】这一过程,而快表的作用就是用来减少这个转化过程的访存次数
  • 逻辑地址在转化为了物理地址后,就该轮到Cache发挥作用的时候了

其次,Cache与主存之间的工作是由硬件自动完成的
而主存与辅存之间的地址转换是由硬件和操作系统共同完成的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小-黯

免费的,尽力

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

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

打赏作者

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

抵扣说明:

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

余额充值