wince内存管理
来源:互联网 发布:化学物质ir光谱数据库 编辑:程序博客网 时间:2024/05/02 04:53
Windows CE采用了四层内存管理结构,从下到上依次为:物理内存,虚拟内存,逻辑内存和C/C++运行时库.其中物理内存包括:RAM(为OS和程序提供运行和缓冲空间),ROM(存储程序,包括OS和一些文件),Flash(可擦写).CE支持最大物理内存为512M.
所有进程共享4G的虚拟存储空间,它是通过以页为单位管理的,不同处理器支持页大小不同(ARM支持1K,4K,64K,1M;X86支持4K与4M).虚拟内存的申请分成保留和提交两个过程(reserve and commit).虚拟内存要求硬件上具有MMU的支持,MMU负责把虚拟地址映射到物理地址,并提供内存保护.CE把4G的虚拟内存分成两部分:低2G为用户空间,由应用程序使用;高2G为内核空间,由OS使用.
所谓逻辑内存分成堆(64K)和栈(60K).而C/C++运行时库提供了一系列内存管理函数,比如malloc,new,delete等等.
在PB的帮助中指出WINCE有两种地址:物理地址和虚拟地址.在不同架构的CPU下,概念有所区别.MIPS和SHx处理器,内核操作1G的存储(512M缓存,512M非缓存);而X86和ARM在OEMAddressTable中划分物理存储.相应的地址映射方法也分成两种:MIPS和SHx处理器,不采用MMU,直接在CPU和内核里定义;X86和ARM在OEMAddressTable中定义映射关系或者是OS启动后调用CreateStaticMapping和NKCreateStaticMapping来实现从虚拟地址到物理地址的映射.
另一种分类是映射虚拟地址的形式可以分成静态虚拟地址映射和动态虚拟地址映射.所谓静态,就是在OEMAddressTable中定义映射关系或者是OS启动后调用CreateStaticMapping和NKCreateStaticMapping来实现从虚拟地址到物理地址的映射;动态则是通过VirtualAlloc和VirtualCopy(或者调用MmmapIoSpace函数).这两种映射虚拟地址的形式区别在于静态虚拟地址只能由内核使用,用于ISR访问外设存储.而动态虚拟地址可以在应用程序里访问物理地址(比如在驱动中操作寄存器).
在X86和ARM体系的CPU里,有一个数据结构对于地址映射技术尤其重要:OEMAddressTable.这个数组定义了外设从4G的虚拟地址到512M物理地址的映射关系.它位于public/common/oak/csp/x86/oal目录下的oeminit.asm中,格式为 Virtual Address, Physical Address, Size
- wince 5.0 内存管理
- winCE的内存管理
- WINCE内存管理基础
- wince内存管理
- WINCE 的内存管理
- WinCE内存管理
- WinCE内存管理
- wince内存分配及管理
- WinCE内存管理(二)
- WinCE内存管理(三)
- WinCE内存管理(四)
- winCE进程、线程和内存管理
- WinCE线程和内存管理之内存管理
- WinCE线程和内存管理之内存管理
- WinCE线程和内存管理之内存管理
- [转载]WinCE 进程、线程和内存管理之同步
- WinCE 进程、线程和内存管理之同步
- wince系统内存管理 System Memory Management in Windows CE
- 【摘自csdn】2010 最牛B的个性签名
- windows下eclipse qt4 安装配置
- MATLAB常用指令
- 我写的DOS关机倒时显示(1小时)
- [软件人生]软件人生中的危境与道德
- wince内存管理
- Linux 安装中文包
- 1000的阶乘!
- 抓SQL执行语句时间的脚本
- 增加 javascript 的 trim 函数
- 1000阶乘的第二种方法
- WSE和MSN的时候安装不了的解决方法
- 如何远程修改FTP密码
- 八大排序算法总结