存储器-页式存储

页式存储系统:一个程序(进程)在逻辑上被分为若干个大小相等的“页面”,“页面”大小和“块”的大小相同。每个页面可以离散地放入不同的主存块中。

 虚拟地址VS实地址

逻辑地址(虚地址):程序员视角看到的地址。

物理地址(实地址):实际在主存中的地址。

 程序员视角:整个程序共4KB=2^{10}B,地址范围:000000000000~111111111111

假设变量x的逻辑地址:001000000011

假设变量y的逻辑地址:110000001010

取变量x至ACC寄存器:

机器指令:000001001000000011(操作码+地址码)(使用逻辑地址)

如何判断变量x和y属于哪个分页:

可以将逻辑地址分为两部分(一部分是逻辑页号,一部分是页内地址)

在这个例子中,由于分为4个页,所以只需要取前两位作为逻辑页号,剩余10位作为页内地址

 主存的物理地址共22位分为(主存块号12位,块内地址10位)

由第一张图的存储情况可知,变量x的物理地址:0000000000101000000011

                                              变量y的物理地址: 11111111111110000001010

页表:逻辑页号-主存块号

操作系统会创建一个页面(一个数据结构)在主存中。页表的作用:记录了每个逻辑页面存放在哪个主存块中

页表中的每一项记录着一对逻辑页号和主存块号的相对位置

 

 

 CPU执行的机器指令中,使用的是“逻辑地址”,因此需要通过“页表”将逻辑地址转为物理地址 

地址变换过程

第一步:先将逻辑地址拆分为逻辑页号和页内地址,页内地址

第二步:CPU中的页表基址寄存器会指明了页表在主存中的存放地址,比如该页表是从主存号1058开始存储的,如果每一行的页表项占4B,那么就意味着从1058号开始往后取4B数据就是第一个页表项,依次。

第三步:查询页表,根据页表基地址和逻辑页号找到逻辑页面存放的主存块号。

第四步:用主存块号凭借页内地址得到最终的物理地址

第五步:根据物理地址访存主存和Cache

 

 由于程序具有局部性,近期访问过的页表项可能会被再次访问,那么就可以将近期访问过的页表项放入更高速的存储器,可加快地址变换的速度,基于这个思想引入下面的地址变换过程(增加TLB)

地址变换过程(增加TLB)

快表(TLB):类似于Cache的一个硬件结构,查找速度非常快

注意区别:

  1. 作用不同:快表的作用是为了加快辅存向主存的地址映射速度,Cache作用是用于解决CPU与主存速度不匹配问题。
  2. 存储的内容不同:快表中存储的是页表项的副本,Cache中存储的是主存块中的副本
  3. 电路设计不同:快表是一种“相联存储器”,可以按内容寻访,Cache需要按物理地址寻访 

逻辑地址=逻辑页号+页内地址(虚地址=虚页号+页内地址)

物理地址=主存块号+页内地址(实地址=实页号+页内地址) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大磊程序员(“hello world”)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值