2016-09-11 19 views
0

일부 프로세스 데이터를 덤프합니다. DirBase 값을 00030000으로 얻었습니다. 창에서이 값을 어떻게 생성합니까? 커널 시작 부분에 AVL 트리 데이터 구조가이 데이터를 제공합니까? 커널에서 내부적으로 프로세스가 생성되는 방법을 배우고 싶습니다. 어떤 종류의 전역 변수가 DirBase, ObjectTable 등의 값을 할당합니까? fb667a00 7 프로세스 fb667a00 시드 과정 : 0002 PEB! 여기 EPROCESS DirBase가 "VAD tree root"를 생성 한 방법은 무엇입니까?

는 일부 샘플 windbg를하다 00000000 ParentCid : 0000 DirBase : 00030000 ObjectTable : e1000f88 테이블 크기 : 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

DirBase은 물리적 주소입니다 페이지 디렉토리의. 각 프로세스는 자신의 페이지 디렉토리를 가지고 있습니다.이 프로세스는 KPROCESS :: DirectoryTableBase 구조체에 있습니다. OS가 프로세스를 활성화하면 KPROCESS :: DirectoryTableBase의 값이 CR3 레지스터에로드됩니다.

페이지 디렉토리 페이지 디렉토리가 http://wiki.osdev.org/Paging

+0

을 생성하는 방법을 수동 인텔 개발자의 구조 descripbed이있다? 모든 새로운 프로세스에 대한 카운터? –

+0

페이지 디렉토리는 OS에 의해 생성되며 카운터가 아닙니다. 그것은 물리적 페이지 집합입니다. – ussrhero

+0

링크를 읽는 것으로 시작하여 나는 그 "카운터"를 의심합니다. OS는 목적을 달성 할 수있는 무료의 phyiscal 페이지를 찾아야 만합니다 (각 단일 페이지 테이블은 한 페이지입니다, 생각한 PDPT 제외). 그러나 위에서 말했듯이, 페이지 디렉토리와 페이지 테이블은 운영 체제가 아닌 프로세서 고유의 데이터 구조이므로 인텔의 설명서는 여기서 큰 도움이됩니다. –