老师的意思是如果是pae的话,则全部指向系统的那个系统页表,这样的话,确实可以理解,但是我的系统确实关掉了pae,没有了那个指向全局系统页表的指针,那该怎么办呢?
老师 ,还是有点疑问,根据老师的指引,我再把我的疑惑表述下:在进程,创建时,他复制了系统内核页表的页目录到自身(实际上是拷贝的父进程),想应整个页表中的高于80000000的页表项pte也复制么?好像是复制,呵呵忘记了。先不管,复制也好,不复制也好,当后来一个内核模块加载到系统中时,并且在某一个进程是调用其代码和数据时,页错误总能把代码和数据带到该进程,正确设置其pte使其能正常执行,我的疑惑是,当该内核模块从系统中卸载时,系统如何保持相关的一致性的?假如系统所有进程都引用过该内核模块,则其页表中pte必定指向相关pfn,既然卸载了,相关fpn则应该释放,否则不是还可以继续引用么?难道系统卸载内核模块是遍历系统所有进程,删除相关pte?不解
先感谢老师,有点开窍了,呵呵,太笨了
那照老师这样说,进程的C0000000-C0800000的进程页表中,后半部分C0400000-C0800000除了页目录之外(好像还有什么超空间之类的其他私有页)其他所有都为0咯? 老师我这种说发对吗?
刚用windbg看了一下
lkd> !pte 805cc3fc VA 805cc3fcPDE at 00000000C0602010 PTE at 00000000C0402E60contains 00000000004009E3 contains 0000000000000000pfn 400 -GLDA--KWEV LARGE PAGE pfn 5cc
lkd> dd 0C0402E60c0402e60 ???????? ???????? ???????? ????????c0402e70 ???????? ???????? ???????? ????????c0402e80 ???????? ???????? ???????? ????????
LARGE PAGE 查了下大页面 发现相关资料讲的很少,不知道其页面映射机制和页交换机制是怎么完成的,老师能都指点下 ?
老师,如何是4m的大页面,那一次访问不就要立马分配4m的大页面么?
既然内核是用大页面映射,而其他模块用小页面映射,那么大页面的虚拟内存和物理内存(pfn)如何管理?内存管理器如何协调两种不同大小的页面?