分页机制+实践
段机制把逻辑地址转换为线性地址,分页机制进一步把该线性地址再转换为物理地址。分页功能从总体上来说, 是用长度固定的页来代替长度不一定的段,分页就是将程序分成若干相同大小的页,每页4K个字节。从80386开始,所有的80x86处理器都支持分页,它通过设置CR0寄存器的PG标志启用。当CR0中的PG=0时,禁止使用分页机制,此时分段机制产生的线性地址直接当做物理地址使用;若PG=1,则启用分页机制。
页:将线性地址空间划分成若干大小相等的片。
物理块或页面:将物理地址空间分成与页大小相等的若干存储块。
页表:把线性地址映射到物理地址的一种数据结构,每个页表的大小是4KB。
页表项:页表内的每个项目叫做页表项,占4字节,存放的是页的物理地址。
简单的分页模型:
页式管理,就是把4GB内存分成大小相同的页,页的最小单位是4KB,即4096字节,所以页的物理地址,其低12位始终为0.线性地址的转换分俩步完成,每一步都基于一种转换表,第一种转化表称为页目录表,第二中转换表称为页表。
两级页表结构:
80386页表共含1M个表项,每个表项占4个字节。如果把所有的页表项存储在一个表中,则该表最大将占4M字节连续的物理存储空间,对页表采取两级表结构后,将线性地址的高20位分两步完成,每步使用其中的10位。
第一级称为页目录,存储在一个4K字节的页面中。页目录表中共有1K个表项,线性表的最高10位用来产生第一级的索引。两级表结构的第二级称为页表,第二级页表由线性地址的中间10位(21-12位)进行索引,最低12位表示页内偏移。
线性地址到物理地址的转换:
32位线性地址的转换:
①