Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17957
  • 博文数量: 6
  • 博客积分: 202
  • 博客等级: 入伍新兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-21 20:34
文章分类

全部博文(6)

文章存档

2012年(6)

我的朋友
最近访客

分类: LINUX

2012-04-30 16:10:45

存在两种方法,一种是可以采用数学公式转换,另外一种就是用表格存储交换后的虚拟地址(MVA)对应的物理地址(PA),即页表,页表有一个个条目组成,每个条目存储了一段MVA对应的PA及其访问权限,或者下一级页表的地址。

采用页表转换过程大致如下:
1)根据给定的MVA找到一级页表的条目;
2)如果此条目是段描述符,则返回物理地址,转换结束;
3)如果此条目是二级页表描述否,继续利用MVA在此二级页表中找到下一个条目;
4)如果这第二个条目是页描述符,返回物理地址,转换结果;
5)其他情况出错;

注:
1)不同的进程对应的VA可能是相同的,它们可以根据其进程ID映射到不同的MVA上,这样在进程切换时,就不需要进行重建页表等高代价操作了;
2)在映射到物理地址过程中,需要用到页表基址寄存器,在段(1M)地址、大页(64K)地址、小页地址(4K)以及极小页(1K)地址转换到PA时都是必须用到的。


段地址转换过程如下:
1)页表基址寄存器[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到段描述符;
2)取出段描述符的为[31:20],即段基址,它和MVA[19:0]组成了32位的物理地址,也就是MVA对应的PA。
阅读(881) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~