How tough life is, how strong you should be!
分类: LINUX
2013-11-04 16:55:32
1.内核线性地址需要覆盖整个物理内存,这样才能达到他管理的目的,如某个进程页表映射到了物理页框0x3000 0000,通过内核页表也可以映射到此页框
2.如果从页目录项768到1023都采取直接映射,最多也只能同时覆盖1GB物理内存
所以,内核干脆将最后32项不参与直接映射,而是可以多次重复映射,每次映射都是暂时的,这样就把
前面224个页表直接映射(可以同时覆盖896MB物理内存),后面32项页表通过重复映射,能覆盖的物理内存就不止128MB了
3.一个计算机系统的物理内存大小正常情况下都是固定的,所以前面224个内核页表(对应页目录项768-991)的内容可以确定,
如果计算机有256MB内存,那么linux在启动时就可以为这256MB物理内存建立内核页表,并且只需64个页表(对应如上图页目录项768--831,而页目录项831-991就用不到了)就可全部同时覆盖,页表项的内容(即物理页框地址)在整个系统运行期间固定不变
如果计算机系统有2G内存,那么linux在启动时可以先为前896MB物理内存建立内核页表,这要花掉整个的
第768-991项页目录项,另外还有1G+128M的物理内存不得不在使用到某个页框的时候用992-1023项页目录项临时映射,
4.内核页目录仅一个,并且前768项不用