内存分配与释放.docxVIP

  • 12
  • 0
  • 约9.15千字
  • 约 20页
  • 2020-12-26 发布于山东
  • 举报
内存分配与释放 1.Windows  内存分配与释放提供了缓存机制,由空闲链表方式提供对非分页内存管理,由位图方式提供分页内存管理 同时提供相应的快查表,将最近释放的页面放入快查链表中,再次申请的时候可以快速的从快查表中取得数据 . 2.在基本的分页内存管理与非分页内存管理上层, windows 暴露了相关的内存分配释放接口( ExAllocatePoolWithTag 1. ExFreePool )并提供相应的执行体内存管理,其采用快查表形式将空闲链表划分到 ListHeads 数组中,并给每个 CUP提供相应 的缓存链表。执行体内存管理采下层提供的内存管理函数,分配基本的内存页,并裁剪到快查表中,如果  ExAllocatePoolWithTag  分配的内存 大于阈值则直接采用下层提供的内存分配接口。 3. 系统非换 页内存池 (物理页 面已分配) 系统换页  链 表 方 式管理 内存地址转换 : 看下面几个函数 #define MiGetPdeAddress(va) ((PMMPTE)(((((ULONG)(va)) 22) 2) + PDE_BASE))  这里 PDE_BASE为 0xc0300000 #define MiGetPteAddress(va) ((PMMPTE)(((((ULONG)(va)) 12) 2) + PTE_BASE))  这里 PTE_BASE为 0xc0000000 32 位  windows 中 PAE没有打开时页目录的地址为  0xc0300000,CR3寄存器中也保存着这个  0xc0300000 举个例子 kd !pte c1234567 VA c1234567 PDE at C0300C10 PTE at C03048D0 contains 17CE5963 contains 0156C4E8 pfn 17ce5 -G-DA--KWEV not valid Proto: E155B1D0 虚拟地址 0xc1234567 寻址过程: 先计算出页目录索引为 0x304, 每个地址是  4 字节,所以他的页目录项的虚拟地址是  0xc0300000+0x304*4 = 0xC0300C10 其中保存的内容 0x17CE5963, 17ce5 是他的页帧索引(页表的物理页面,这个物理页面对应的虚拟地址是0xC0304000到 0xC0304FFF)。 由公式我们得到 PTE的虚拟地址是 0xC03048D0即 PTE基地址 0xc0000000+每页表的大小( 0x1000)* 页目录索引( 0x304) +页表索引( 0x234)* 每个地址大小 4 字节)。 2.Windows在初始化内存管理时采用了自映射机制 首先,看下面的一个宏: #define MiGetVirtualAddressMappedByPte(PTE) ((PVOID)((ULONG)(PTE) 10)) 此宏的含义是,给定一个 PTE 的虚拟地址,返回该 PTE 所指页面的虚拟地址。 举例而言,假设 PTE 的地址(虚拟地址)为页目录索引、页表索引、页内偏移三部分。在问该 PTE 的时候,首先从页目录页面中,找到  0xc0390c84,即 1100,0000,00|11,1001,0000,|1100,1000,0100 ,这里 “|符”号将它分为 Windows 中,页目录( CR3 寄存器)的地址是 0xc0300000 ,所以,处理器在访 1100,0000,00 项,即第 0x300 项。这一项由系统特别设置好,它指向页目录自身 (后面进一步解释为什么这么设置) 。接下来查找 0xc0390c84 的页表索引, 即 11,1001,0000 ,处理器继续在页目录页面中查找, 找到 11,1001,0000,即第 0x390 项,这一项指向一个页表页面。最后,处理器再根据页内偏移 1100,1000,0100 ,即 0xc84,定位 到第 0x321 项。此 PTE 的寻址过程如下图所示。 按 照 MiGetVirtualAddressMappedByPte , 将 0xc0390c84 , 左 移 10位,变 成 0xe4321000 , 即 1110,0100,00|11,0010,0001,|0000,0000,0000 ,这样得到页目录索引 1110,0100,00,即 0x390;页表索引为 11,0010,0001,即 0x321; 页内偏移为 0。可以看到,这里复用了 PTE 寻址过程中的两次查表步骤。此 PTE 所指页面的寻址过程如下图所示。 MiGetVirtualAddressMappedByPte 宏之所以能够工作

文档评论(0)

1亿VIP精品文档

相关文档