关于分页的原因,分页机制的原理就不赘述了。
0.一些问题
问:前面已经把内存分段了,难道直接舍弃,采用分页嘛?
答:要兼容,不舍弃。分段用 [段基址:偏移地址]得到一个线性地址,得到的线性地址再经过分页机制的转换,才得到真正的物理地址。才把这个物理地址送到地址线去访问真实的物理内存。
分页机制是建立在分段机制之上的。
段部件的作用是根据段基址和偏移地址得到一个线性地址。在没有启用分页机制的情况下,这个线性地址就是物理地址。
1.一级页表
整个内存空间分为大小相等的页,页的大小为 4KB。对于4GB的内存空间,也就有1M(1048576)个页。
内存中还有一个区域叫页表。页表中有页表项,每个页表项对应一个页。也就有1048576个页表项。
页表项里大小为4字节,存放的是对应的每个页的物理地址。
线性地址是如何转化为物理地址的呢?
一个线性地址是 32 位的,用高 20 位去页表中检索页表项,找到页表项,得到里面的物理地址,就得到真正的页的物理地址。低 12 位是页内偏移地址。