我转储了一些流程数据。 我得到DirBase值为00030000 Windows如何生成此值? 内核开头的任何AVL Tree数据结构都会给出这些数据吗? 我想学习如何在内核上创建进程。 什么样的全局变量分配DirBase,ObjectTable等值。
以下是一些示例windbg: !进程fb667a00 7 PROCESS fb667a00 Cid:0002 Peb:00000000 ParentCid:0000 DirBase:00030000 ObjectTable:e1000f88 TableSize:112。
When a process created by system.
System creates new pagedirectory for process and assigns a number to process page directory.
How can windows assigns that number ? is there an AVL Tree data structure that has free page tables and busy page tables trees.
And system allocates one page directory from that AVL Tree ?
There is no documentation how this mechanism works ?
I want to learn how page directory gets its data ?
答案 0 :(得分:0)
DirBase是页面目录的物理地址。 每个进程都有自己的页面目录,它放在struct KPROCESS :: DirectoryTableBase中。当OS激活进程时,KPROCESS :: DirectoryTableBase中的值将加载到CR3寄存器。
页面目录具有“英特尔开发人员手册”中描述的结构 http://wiki.osdev.org/Paging