动态映射和静态映射
2010-04-29 10:52
204 查看
先说VirtualAlloc 和VirtualCopy
VirtualAlloc 首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCopy来干的,此时,MMU的页表就会增加一个entry,来表示物理--虚拟的映射关系。
再说动态虚拟内存映射和静态虚拟内存映射
OEMaddressTable只是建立了一个一级的静态虚拟--物理的映射关系,一般给kernel(NK.EXE)通过直接访问的形式来用(OALPAtoVA);
MmMapIOSpace(VirtualAlloc +VirtualCopy)是一种动态虚拟映射的手段,一般给驱动根据当前需要(对硬件操作)动态申请并建立映射。
内核部分就要用这个OEMaddressTable来转换,wince5.0下 用户态的驱动(wince6.0驱动貌似是在内核态)就要用这个VirtualAlloc+VirtualCopy来进行地址映射。
详见:http://topic.csdn.net/u/20080918/18/f1dbb82a-dfac-484b-b298-ecdb61505ff8.html
VirtualAlloc 首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCopy来干的,此时,MMU的页表就会增加一个entry,来表示物理--虚拟的映射关系。
再说动态虚拟内存映射和静态虚拟内存映射
OEMaddressTable只是建立了一个一级的静态虚拟--物理的映射关系,一般给kernel(NK.EXE)通过直接访问的形式来用(OALPAtoVA);
MmMapIOSpace(VirtualAlloc +VirtualCopy)是一种动态虚拟映射的手段,一般给驱动根据当前需要(对硬件操作)动态申请并建立映射。
内核部分就要用这个OEMaddressTable来转换,wince5.0下 用户态的驱动(wince6.0驱动貌似是在内核态)就要用这个VirtualAlloc+VirtualCopy来进行地址映射。
详见:http://topic.csdn.net/u/20080918/18/f1dbb82a-dfac-484b-b298-ecdb61505ff8.html
相关文章推荐
- Linux内核访问I/O资源的方法:动态映射(ioremap)和静态映射(map_desc)
- Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)
- 404.17 - 动态内容通过通配符 MIME 映射映射到静态文件处理程序
- Linux内核访问外设I/O资源的方式-动态映射(ioremap)与静态映射(map_desc)方式
- 帧中继动态映射与静态映射主要区别
- Linux内核访问外设io--动态映射和静态映射
- Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc) (转载)
- Linux内核访问外设io--动态映射和静态映射
- Linux内核访问外设I/O资源的方式(设备物理地址和设备虚拟地址),静态映射和动态映射
- linux 内核动态映射与静态映射
- 驱动学习之静态映射和动态映射
- Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)
- Linux内核访问外设I/O资源的方式(设备物理地址和设备虚拟地址),静态映射和动态映射
- 动态映射和静态映射
- 字符设备驱动高级篇5——静态映射表、动态映射结构体方式操作寄存器
- 静态映射和动态映射
- wince bsp中的g_oalAddressTable表----静态映射/动态映射
- Delphi语言学习9-函数的静态和动态加载
- hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition)
- 深入理解 Java 虚拟机-多态性实现机制——静态分派与动态分派