地址翻译

摘自 《深入理解计算机系统》
地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射:
MAP(A) =’A’
如果虚拟地址A处的数据在PAS的物理地址’A’处。
MAP(A) = 0
如果虚拟地址A出的数据不在物理存储器中,则此方法为0。


1 页表实现映射的方法:
CPU 中有一个控制寄存器:页表基址寄存器(page table base register PTBR)指向当前页表。
n位的虚拟地址包含两部分:一个p位的VPO(virtual page offset 虚拟页面偏移) 和一个(n-p)位的VPN(virtual page number 虚拟页表条目),地址映射是通过VPN来选择适当的页表。
例: VPN0 选择PTE0
VPN1 选择PTE1
。。。。
根据PTE*对应的物理页号和物理地址的偏移量之间的串联就可以得出相应的物理地址。


当CPU实现页面映射的时候发现命中不成功,及PTE寻址时发现有效为为零,此时寻址就会产生异常
1 传递给cpu的控制到存储过程中的缺页异常程序;
2 缺页处理程序确定需牺牲页,将待牺牲页换出放入硬盘中;
3 缺页处理程序调入新页面,并更新存储器的pte;
4 缺页处理程序返回至原来的进程,使缺页处理程序重新启动进程,重新进行地址映射,此时就会进行地址翻译及页命中,程序继续向下执行。


地址翻译的功能就是根据虚拟地址找出对应页表中所对应的物理地址和物理串联起来生成所对应的物理地址。如果发生页不命中的情况,则通过操作系统的缺页处理程序进行缺页处理程序后再进行地址映射。

练习题:
一个32位的虚拟地址空间和一个24位的物理地址,对于下面的页面大小P,确定vpn VPO PPN PPO 中的位数:

P

2的几次方

VPN位

VPO位

ppN位

ppo位
1KB

10

22

10

14

10
2KB

11

21

11

13位

11
4KB

12

20

12

12

12
8KB

13

19

13

11

13

根据n为的虚拟地址有 一个p为的vpo 和一个n-p位的vpn组成; n=32位
虚拟页面的偏移VPO同PPO物理页面的偏移相等;
物理页面+物理页面偏移=物理页位数
ppN+ppo =24;
vpn+vpo =32;
1kb 时p=10及 ppo vpo 偏移=10