- 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 宏之所以能够工作
您可能关注的文档
最近下载
- 农信社改制农商行必须注意的几个问题.pdf VIP
- 2026年树立和践行正确政绩观研讨交流材料 2篇.docx VIP
- (高清版)DB37∕T 4778—2024 城市轨道交通联络通道冻结法技术规范.pdf VIP
- 线圈放线机机械部分设计[答辩资料].doc VIP
- 9-1化肥产品生产许可证实施细则(一)(复肥产品部分)2025版.pdf VIP
- 《新媒体节目主持策略与技巧(微课版)》教学大纲 .docx
- 人教版2025-2026学年六年级道德与法治下册教学工作计划(及进度表).docx
- 宠物食品加工管理技术2.ppt VIP
- 发动机台架试验报告.docx
- 22J403-1 楼梯 栏杆 栏板(一) (3).pdf VIP
原创力文档

文档评论(0)