页表其实就是一个大数组,索引指的是page num,索引所对页表项的内容,是帧号 frame num
CPU会查找这个页表在什么地方,其实地址在哪,然后通过pagenum算出index,寻址到对应的页表项,把相应的frame num给取出来,有了帧号和偏移就可以按公式计算出对应的物理地址,
如上图,除了帧号外,还有相应的bit,这些bit有相应的用途,比如说,表示这个页表项是否是合法的页表项,对应的物理页在内存中是否存在。前面讲到,我们逻辑地址空间很大,有一部分逻辑地址空间是可能没有对应到物理地址空间的,这时候bit属性应该就表示不存在了,可能是1表示存在,0表示不存在。
当然还有其它的情况,代表页读和写的情况,是写过,读过,还是没有读,没有写,这一系列属性在这里面都开表示。
上图是个例子,说先看下内存空间的大小,逻辑地址空间一共有16个bit,意味着有64K的地址空间,但是我们物理空间只有32KB。这就是前面所说的物理空间和逻辑空间是不一致的,但是他们页内偏移是一样的,页的大小和页帧大小都是一样的,都是1KB。
上图左边,逻辑地址(4,0)和(3,1023),看看处理过程是怎样的,
首先CPU他要找这个逻辑地址,先看(4,0),查一下这个页表,第4项有一个标志位和相应的帧号, 标志位红色的0代表当前物