需要首先理解的概念:
1、引入page后,原有的段基址保持不变,不过段做了“虚拟化”处理,所谓的虚拟化即对于32位系统,一个任务具有4G的段寻址空间(虚拟空闲),其特点是每个段都是连续的
;相比较,page是分散的,一般以4K为一个单位。
2、page的概念的精髓是将物理内存格式化成一页一页,4k一页。page关注物理内存的分配与管理。段(虚拟段)侧重用户程序的逻辑分配,互不干扰,分离的好处是解放了用户程序的底层操作,可以放更多的精力在程序任务本身的逻辑处理
3、页表、页目录不是什么特殊的东东,与普通的页一样。只是内容和功能不一样,普通页或许是虚拟数据段的内容、亦或者是代码段的内容。而页目录则只是存放了页的基地址,4byte一个表项,页目录可以存放1024个页表基地址。而1个页表(4k)可以存放1k个页基址,一个单元4bytes。
4、页目录基址有CR3寄存器给出。每个任务都有属于自己的页目录、页表
5、页在页表中的位置是随机、混乱的。因为页内存是动态分配的!!!这是核心。
今天先理解到这里。后续再整理内核如何初始化page。