操作系统面试题五

多级页表

多层页表的结构相似一个Btree,这种层次结构有效减缓了内存要求:

  • 如果一个一级页表的一个PTE是空,那么 相应的二级页表也不存在。这代表一种巨大的潜在节约(对于一个普通的程序来说,虚拟地址空间的大部分都会是未分配的)。
  • 只有一级页表才总是需要缓存到内存中,这样虚拟内存系统就可以在需要时创建、页面调入或调出二级页表(只有经常使用的二级页表才会被缓存在内存中),这就减少了内存的压力。

地址翻译的过程

地址翻译是一个N元素的虚拟地址空间中的元素和一个M元素的物理地址空间中元素之间的映射。

MMU利用页表进行寻址的过程:

页表基址寄存器指向当前页表。一个n位的虚拟地址包含两个部分,一个p位的虚拟页面偏移量和一个(n-p)的虚拟页号。

MMU根据虚拟页号寻找对应的PTE。因为物理页和虚拟页的大小一致,所以物理偏移量和虚拟页面偏移量时一致的,所以只要将PTE中的物理页号(Physical Page Number, PPN)与虚拟地址中的VPO串联起来,就能得到相应的物理地址

TLB

页表是被缓存在内存中,虽然内存的速度相对于硬盘来说已经很快,但与cpu还是存在很大差异。为了防止每次地址翻译都需要去访问内存,cpu使用了高速缓存与TLB来缓存PTE.

TLB被翻译成后备缓冲器,它是MMU中的一个缓冲区,其中每一行都保存着一个由单个PTE组成的块。用于组选择和行匹配的索引字段与标记字段是从vpn中提取出来的,如果TLB中有T = 2^t个组,那么TLB索引(TLBI)是由VPN的t个最低位组成的,而TLB标记(TLBT)是由VPN中剩余的位组成的。

地址翻译过程

  • 第一步,cpu将一个虚拟地址交给MMU进行地址翻译。
  • 第二步和第三步,MMU通过TLB取得相应的PTE.
  • 第四步,MMU通过PTE翻译出的物理地址并将它发送给高速缓存/内存。
  • 第五步,高速缓存返回数据给cpu(如果缓存命中的话,否则还需要访问内存)。

当TLB未命中时,MMU必须从高速缓存/内存中取出相应的PTE,并将新取得的PTE存放到TLB(如果TLB已满会覆盖一个已经存在的PTE)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值