cpu发出线性地址,linux内存管理单元做如下四步:
1.用线性地址中最高的那一位段作为下标在PGD中找到相应的表项,该表项指向相应的中间目录PMD。
2.用线性地址中的第二个位段作为下标在第一步中找到的表项中找相应的表项,该表项指向相应的页面表。
3.用线性地址中的第三个位段作为下标在页面表中找到相应的表项PTE,该表项中存放的就是指向物理页面的指针。
4.线性地址中最后位段为物理页面的相对位移量,将此位移量与目标物理页面的起始地址相加便得到相应的物理地址。
linux为了兼容所有的cpu体系结构,特意对内存管理进行了一层抽象。
常规映射是: 进程虚拟地址(线性地址)->页目录->中间目录->物理地址
而对i386的cpu直接略过中间目录的映射。
其中PGD == page dir,PMD == page middle dir, PTE == page table entry。
这个过程可以有mmu来处理。