简单的定义:
逻辑地址=页号P+偏移量W
物理地址=某程序指定页的块号+偏移量W
分页地址
地址结构(逻辑地址):
图中地址长度一共32位,其中0~11位为页内地址,即每页的大小为2^12B = 4KB;12~31位为页号,最多允许有1M = 2^20B = 1024KB页。
页号P和页内地址d可以以下公式求得:
举个小例子:如果某系统的页面大小为1KB,设A = 3200B,
那么P = 3200B/1024B = 3, d = 3200B%1024 = 128
页表
首先
页表结构如下:
页表结构如下:
配置了页表后,当进程执行时,通过查找该表,即可找到每页在内存中的物理块号,因此,页表的作用就是实现了从页号到物理块号的地址映射。
下面看一个题目:
假设在某分页存储管理中,页号大小为4KB。有某进程的页号0~8对应物理块号8,9,10,15,18,20,21,22.求该进程逻辑地址05AF8H所对应的物理地址.
- 根据页面大小:4KB = 2^12,说明0~11位页内地址,也就是位偏移量W = 4KB,
- 根据最开始的公式:
逻辑地址=页号P+偏移量W
物理地址=某程序指定页的块号+偏移量W,
那么如何求块号P呢,根据上述页表的结构,再看题目,题目中给出了页号对应的块号,所以我们只要得到页号就行,怎么求页号呢? - 根据逻辑地址求页号:逻辑地址05AF8H,是16进制的,化成对应的二进制形式,0000 0101 1010 1111 1000 ,后0~11位是页内偏移,就是偏移量=1010 1111 1000,前面部分就是P = 0101 = 5(10进制),求得对应的块号是20,所以
最后,物理地址=块号*页面大小+偏移量 = 20*4KB+1010 1111 1000KB,化成二进制就是 0001 0100 1010 1111 1000,化成十六进制就是14AF8 H