1.页表寄存器的作用
- 存放页表起始地址
- 存放页表长度
2.地址变换过程
- 根据逻辑地址A算出页号P和页内偏移量W
- 页号P的合法性检查(与页表长度M对比),注意取等号时已经越界
- 若页号合法,再根据页表起始地址F、页号找到对应页表项;页号P对应的页表项地址 = 页表起始地址F + 页号P * 页表项长度
- 根据页表项中记录的内存块号b、页内偏移量W得到最终的物理地址
- 访问物理内存对应的内存单元
3.注意区分的概念
- 页表项长度:每个页表项占多大的存储空间
- 页表长度:这个页表中总共有几个页表项,即总共有几个页
- 页面大小:一个页面占多大的存储空间
4.其他小细节
- 页内偏移量位数与页面大小之间的关系(要能用其中一个条件退出另一个条件)
- 页式管理中地址是一维的
- 实际应用中,通常使一个页框恰好能放到整数个页表项
- 为了方便找到页表项,页表一般是放在连续的内存块中
5.具有快表的地址变换机构
5.1快表TLB
- 又称联想寄存器(Translation Lookaside Buffer)
- 一种访问速度比内存快很多的高速缓存,用来存放最近访问的页表项的副本
5.2引入快表,地址变换过程
- 计算页号、页内偏移量
- 检查页号的合法性
- 查快表。若命中,直接进行5;未命中则进行4
- 查页表,找到页面存放的内存块号,并将页表项复制到快表中
- 根据内存块号与页内偏移量得到物理地址
- 访问目标内存单元
5.3局部性原理
时间局部性
- 如果执行某条指令,那么不久后这条指令很可能再次执行
- 如果访问某个数据,不久之后该数据很可能再次访问
- 因为程序中存在大量的循环
空间局部性
- 一旦程序访问某个存储单元,在不久之后,其附近的存储单元也很有可能被访问
- 因为很多数据在内存中都是连续存放的
6.Sample
6.1地址变换
设页面大小为L,逻辑地址A到物理地址E的变换过程如下:

- 1、计算页号P(P = A/L)和页内偏移量W(W = A%L)
- 2、比较页号P和页表长度M,若P >= M,则产生越界中断,否则继续执行
- 3、页表中页号P对应的页表项地址 = 页表始址F + 页号P * 页表项长度,取出该页表项内容b,即为物理块号
- 4、 计算E = b*L + W,得到物理地址
例:若页面大小L为1K字节,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E
等价描述:某系统按字节寻址,逻辑地址结构中,页内偏移量占10位,页号2对应的内存块号为b=8,将逻辑地址A=2500转换为物理地址E
- 1、计算页号、页内偏移量
- 页号
P = A/L = 2500 / 1024 = 2
- 页内偏移量
W = A%L = 2500 % 1024 = 452
- 页号
- 2、根据题中条件可知,页号2没有越界,其存放的内存块号 b = 8
- 3、物理地址
E = b * L + W = 8 * 1024 + 452 = 8664
6.2引入快表的地址变换机构

例:某系统使用基本分页存储管理,并采用了具有快标的地址变换机构。访问一次快表耗时1us,访问一次内存耗时100us。若快标的命中率为90%,那么访问一乐逻辑地址平均耗时是多少?
- (1+100)* 0.9 + (1+100+100)*0.1 = 111us
- 有的系统支持快表和慢表同时查找,则平均耗时:(1+100)* 0.9 + (100+100)*0.1 = 110.9us
- 若未采用快表机制,则访问一乐逻辑地址需要:100+100 = 200us