欢迎来到天天文库
浏览记录
ID:9507930
大小:61.50 KB
页数:8页
时间:2018-05-01
《windows ce内存管理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、WindowsCE内存管理 内存管理 如果你在写磁盘。不同于PC上的旧式的虚拟RAM磁盘,对象存储区保留存储的文件甚至当系统被关闭以后。(脚注)这种安排的原因是以便维持文件在对象存储区的存储。当用户按了重启键之后,中的另一个区域则用作程序存储区。程序存储区有点像个人电脑中的RAM,它为正在运行的应用程序保存堆和栈的内容。在对象存储区和程序存储区之间的分界线是可以通过移动它来改变的,用户可以在控制面板中找到改变这条分界线的设置。在可用内存降低的(loemory)条件下,系统将会弹出对话框询问用户是否要将对象存储区RAM划分一些给程序存储区RAM以满足要运行
2、的应用程序的需求。关于ROM 在个人电脑中,ROM是用来存储BIOS(基本输入输出系统)并且只有64-128KB。在大小可以从4MB到32MB并且存放整个操作系统以及和系统捆绑在一起的应用程序。在这种情况下,ROM在之上的程序能够以现场执行(ExecuteinPlace,XIP)的方式运行。换句话说,程序可以直接从ROM中执行而不必先加载到RAM中再执行。这种能力对小型系统来说,使之在两个方面具有巨大的优势。代码直接从ROM中执行意味着程序代码不会占据更有价值的RAM。同样,程序在执行前也不必先复制到RAM中,这样就只需要很少的时间来启动一个应用程序。不在
3、ROM中,但是被包含在对象存储区(译者注:上文将对象存储区比作永久的RAM磁盘,故此处要说明,只有Intel力推的norflashmemroy类型才能以XIP方式执行,ROM其实也是一种norflashmemory类型)或闪存卡(Flashmemorystoragecard)中的程序将不能以现场方式执行,它们将被复制到RAM中再执行。关于虚拟内存 S-DOS系统复杂的地址空间看出来。一旦请求的RAM超过最初PC设计的640-KB限制,程序设计者将不得不作出像扩展内存一样的计划以便增加可用内存的数量。OS/21.x(译者注:IBM研制的操作系统)和emory
4、Status函数,GetSystemInfo函数原型如下: VOIDGetSystemInfo(LPSYSTEM_INFOlpSystemInfo); 它传递了一个指针给SYSTEM_INFO结构,定义如下odel)和芯片的步进级别(steppinglevel)。typedefstruct{aximumApplicationAddress;DaximumApplicationAddress参数说明了应用程序可用到的最小和最大的虚拟内存地址。dberOfProcessors参数显示被EMORYSTATUSlpmst);它返回一个MEMORYSTATUS结构
5、,定义为typedefstruct{Dem[i]=VirtualAlloc(NULL,PAGESIZE,MEM_RESERVE│MEM_MIT,PAGE_READ,VirtualAlloc也会在完成分配前失败。因为它的运行已经超出了应用程序的虚拟地址空间。发生这种情况是因为每1-KB的块要占用64-KB的空间,接下来应用程序的代码,栈,和本地堆也要映射到同样的32-MB虚拟地址空间,可用的虚拟分配区域通常不超过475个。 一个比较好的分配512块特殊内存的方法是这样做:#definePAGESIZE1024 //Assumeachine.//Reserve
6、aregionfirst.pMemBase=VirtualAlloc(NULL,PAGESIZE*512,MEM_RESERVE,PAGE_NOACCESS);for(i=0;i<512;i++)pMem[i]=VirtualAlloc(pMemBase+(i*PAGESIZE),PAGESIZE,MEM_MIT,PAGE_READem,UINTuBytes,UINTuFlag); hMem参数是一个由LocalAlloc返回的指针(句柄)。uBytes参数是内存块的新大小。uFlag参数包含给新内存块的标志。在EM_MOVEABLE标志,调用将会返
7、回句柄(实际是指向内存块的指针)。 内存块的大小可以通过以下调用查询: UINTLocalSize(HLOCALhMem); 返回内存块最少需要的内存大小。像我前面提到的,ain 00011000f memtest.obj0001:0000007c _InitApp 0001107cf memtest.obj0001:000000d4 _InitInstance 000110d4f memtest.obj0001:00000164 _TermInstance 00011164f mem
8、test.obj0001:00000248 _M
此文档下载收益归作者所有