也看了一些windows内存管理方面的资料了,总感觉这方面资料匮乏,写下这篇笔记是为了以后方便查找,肯定有很多错误,以后有更深的理解了再来修改吧!
首选在这之前得理解Cpu的分页机制。在这里我就不做叙述了。
windows内存管理把一个页就对应着一个结构体,它们被存放在一块连续的地方。操作系统定义了一个指针。指向这块地址
kd> dd MMpfndatabase
80560be8 80c36000 0000ff00 00000000 0000003f
80560bf8 00007bfd 00017dff 000149a0 00000b42
80560c08 0000a24a 00000000 00009068 000053cc
80560c18 00000c11 00000000 00000000 00000240
80560c28 00000024 00000000 00000000 0000001e
80560c38 000000fa 000182a9 0001ffff 0001ffff
80560c48 0001ff7c 00000040 00000000 7fff0000
80560c58 80000000 7ffeffff 00000000 00000000
操作系统把物理内存分为了6种等级
1.mmZeroedPageListHead 0
2.mmFreePageListHead 空闲的
3.mmstandyPageListHead
4.mmmodifiedPageListHead
5.mmmodifiednowritePageListHead
6.mmbadPageListHead 坏的
kd> dd mmZeroedPageListHead
80552460 00015ba8 00000000 000112a5 0