分页机制是80x86内存管理机制的第二部分。它在分段机制的基础上完成虚拟(逻辑)地址到物理地址转换的过程。
分段机制把逻辑地址转换成线性地址,分页机制则把线性地址转换成物理地址。
处理器分页机制会把线性地址空间划分成页面,然后这些线性地址空间页面被映射到物理地址空间的页面上。
分页机制有几种页面级保护措施;可和分段机制保护机制合用或替代分段机制的保护措施。
另外在页面单元上,分页机制还提供了用户-超级用户两级保护。
通过设置控制寄存器CR0的PG位可以启用分页机制。如果PG=1,则启用分页操作。
分页机制把线性和物理地址空间都划分成页面;线性地址空间中的任何页面可以被映射到物理地址空间的任何页面上。
80x86使用4K(2^12)字节固定大小的页面。
分页机制把4GB(2^32B)的线性地址空间划分成2^20个页面。
线性到物理地址的转换功能被扩展成允许一个线性地址被标注为无效的,而非让其产生一个物理地址。
在两种情况下一个页面可以被标注为无效的:1)操作系统不支持的线性地址;2)对应在虚拟内存系统中的页面在磁盘上而非在物理内存中;
第一种情况下,产生无效地址的程序必须被终止;
第二种情况下,该无效地址实际上是请求操作系统虚拟内存管理器把对应页面从磁盘上加载到物理内存中;
无效页面,由页表中称为存在(present)的属性来确定;
分页与分段最大的不同之处在于分页使用了固定长度的页面。
为了减少地址转换所要求的总线周期数量,最近访问的页目录和页表会被存放在处理器的缓冲器件中。该缓冲器件被称为转换查找缓冲区,Translation Lookaside Buffer, TLB。
Linux内核完全剖析,p98