Microsoft Windows CE 的内存使用

上传人:m**** 文档编号:192114579 上传时间:2023-03-06 格式:DOCX 页数:11 大小:52.05KB
收藏 版权申诉 举报 下载
Microsoft Windows CE 的内存使用_第1页
第1页 / 共11页
Microsoft Windows CE 的内存使用_第2页
第2页 / 共11页
Microsoft Windows CE 的内存使用_第3页
第3页 / 共11页
资源描述:

《Microsoft Windows CE 的内存使用》由会员分享,可在线阅读,更多相关《Microsoft Windows CE 的内存使用(11页珍藏版)》请在装配图网上搜索。

1、Microsoft Windows CE 的内存使用John Murray1997.9介绍MicrosoftWindows CE 是组件化的操作系统,它可根据目标设备或平台的不同特点进行定制。原始设备制造商(OEM )或嵌入系统开发者可以选择所需的系统模块和组件,将其提供给用于目标平台的操作系统。所选择的模块和组 件确定了它的内存需求情况。一个模块表示一个完整的功能区域,在系统软件中可将其表示出也可以不将其表示出。如果不需要该功能,那么可以将整个模块忽略。例如,用一个名为“ serial ”单的模块提供出所有串行端口的功能,可以将其包括在系统中也可以不 包括。一些大的模块可以进一步分成几个组件

2、。这使得OEM厂商可以通过仅仅包含OEM设备的需要的组件,定制出这些 模块更小的版本。例如,文件系统模块包括RAM文件系统、ROM文件系统、注册表和数据库几个组件。OEM可以(按 照一定的限制)组合这些文件系统的组件使之满足目标系统的需要。为了帮助OEM和嵌入系统开发者做决定,这对于了解给定模块或组件的内存耗费情况是十分有用的。本文将讲述Windows CE 2.0操作系统是如何使用内存的,并列出对于所选的Windows CE系统配置中主要系统模块和组件的内存 需求情况。同时也将讲述如何使用Windows CE工具查看其他配置情况下的内存需求情况。对于Windows CE 2.0版,微软已经创

3、建并测试了这些模块和组件的几种基本配置。这些配置代表了不同的几组系统 性能,从仅带有最小用户输入并且没有显示能力的基本系统,到用于手持PC (H/PC)上的具有Microsoft Windows全 部外观和感觉的完整系统。每个配置都是建立在前一个配置的基础上的。下列表格列出了在本文中被讨论到的被测试过的配置。配置描述最小输入系统(Mininput)核心、基本文件系统、注册表和基本用户支持。基本用户支持包括:对消息队列、触摸板、 键盘输入设备、声音、电源、发光二极管(LED)提示和机器空转的支持。最小图形显示接口(MinGDI)Mininput并加上最小的GDI (基本绘图元、设备上下文)。最小

4、通信(MinComm)Mininput并加上通信堆栈(传输控制协议/Internet协议TCP/IP、点对点协议、电话应用 程序编程接口TAPI,串行端口、网络设备/驱动接口描述NDIS、红外线数据联接IRDA)。Windows用户接口(UI)配置(HPC2Apps)MinComm并加上所有和Window相关的API函数(例如CreateWindow),这就是用于H/PC上的版本。系统内存的使用典型的Windows CE设备包括ROM和RAM内存。当设备被关闭时,设备也可以通过使用充电的后备电池而继续维持 RAM 中的内容。系统内存可以按照下列表格中描述的情况分类。内存描述包含Windows

5、CE的执行体和其他系统文件。这些文件的文本(代码)和只读数据部分是未被解压到ROM执行位置(XIP )的部分。RAM存储内包括文件系统(包括注册表和Windows CE数据库)。包括可读/写数据区。存RAM程序内工作RAM.存ROM包含未解压到执行位置(XIP)的文件,包括系统执行体、动态链接库(DLLs)和被捆绑的应用程序如MicrosoftPocket Word。这些文件都起始于页面的边界。ROM还包括这些应用程序所使用的各种文件,如字体、声音和位图。这 些文件中的大多数被压缩了(除了一些字体例外)。代码和执行体的只读部分以及DLLs被解压到启用的执行位置。由 于可读/写部分在指定的RAM

6、,它们将在那里被压缩。为了节省空间,这些小文件和被压缩的可读/写区中的许多被放置在内存的缝隙中。这些缝隙是放置在ROM中的代码 或只读内存区的最后一页省下的空间。压缩ROM中的执行体或DLL也是可能的。当这类执行体运行时,请求换页程序将所虚页面解压并将它们装入RAM。 RAM 被分成两个部分:存储内存和程序内存。存储内存包括注册表、文件系统和数据库。文件系统包括由用户安装 或创建的应用程序和数据文件。在文件系统中的所有文件都是被压缩的。程序内存是由系统使用的并用于运行应用程序。 用户在任何时刻不需重新启动,就可以重新调整对存储内存和程序内存的划分。用户安装的应用程序压缩驻留在文件系统中。代码和

7、数据需要被解压到程序内存来执行。请求换页被支持当一个 用户安装的应用程序被启动时,仅有一小部分应用程序需要被解压到程序内存。除了数据部分,每个执行体通常都耗费一定量的程序内存用于它的堆栈数据。堆栈通常可以动态增加或减少。Windows CE Version 2.0 的内存使用下列表格显示了带有SH3微处理器的HitachiD9000开发平台上的内存使用情况。RAM和栈的数值是在启动后 Memtool 实用程序检查系统状态时取得的。这些数据是按照下列方式计算出的:ROM (代码和只读数据)。列于Romimage实用程序输出模块的所有部分的总合。RAM。通过Memtool实用程序和Ppsh实用程序

8、内存信息(mi)命令在页面总计处列出的可读写数据。Stack。通过Memtool实用程序和Ppsh实用程序内存信息(mi)命令在页面总计处列出对于栈的数值。 尽管Memtool和Ppsh实用程序显示出每个进程在RAM中只读数据,但是这个内存常常仅代表核心分配出的共享内存。 这个共享内存物理上仅消耗核心所使用的一个页面。因此,带有尺寸为1的只读页面的模块并没有计算到模块RAM的 需求。额外部分包括核心和只读页面尺寸大于1的模块。由于这些额外部分,RAM的需求可以算成是只读和可读/写部 分的总和。MinInputMinInput 系统代表一个具有最小输入的系统。它包括核心、基本文件系统、注册表和基

9、本用户的输入支持。基本用户的输入支持包括:对消息队列的支持、触摸面板、键盘输入设备、声音、电源、提示LED和空转控制。下列表格是以千字节为单位(K)显示出在系统刚刚启动后,Minlnput的详细配置值。模块ROM (K) RAM (K) Stack (K)Nk.exe11954Filesys.exe 5761Gwes.exe6093Coredll.dll94这个配置的ROM中还包括了下列DLLs。模块ROM (K)Toolhelp.dll 2Keybddr.dll 8Touch.dll 12MinGDIMinGDI系统代表一个带有GDI的最小系统。MinGDI系统包括了 MinInput系统中

10、的所有组件,并添加了基本绘图元 和设备上下文。下列表格显示了在系统刚刚启动后,MinGDI的详细系统配置值。模块ROM (K) RAM (K) Stack (K)Nk.exe11974Filesys.exe12271Gwes.exe2826974Coredll.dll103除了在 MinInput 配置中列出的 DLLs 外,该配置的 ROM 中还包括了下列 DLLs。模块ROM (K)Ddi.dll 29Wavedev.dll 15MinCommMinComm配置代表一个带有最小通信能力的系统。MinComm系统包括了 Minlnput系统中的所有组件,并添加了一些通信堆栈(TCP/IP、P

11、PP、TAPI、Serial、NDIS 和 IRDA)。下列表格显示了在系统刚刚启动后, MinComm 的详细系统配置值。模块ROM (K) RAM (K) Stack (K)nk.exe119314Filesys.exe 8691gwes.exe45121Device.exe15678coredll.dll128ROM (K)59001-61-寸60060061ppp.dllcxport.dlllrcomm.dllWinsock.dllsecur32.dllSchannel.dllNtlmssp.dllafd.dllarp.dllndis.dllne2000.dlltcpstk.dllir

12、dastk.dlliUnimodem.dllredir.dllOSTIC1 耳KHffiESH圧乏 0工SBW蜃徑寒号吕轻壬耳圧Bwlndu_u_l/lWHNetbios.dll25Wininet.dll105Pcmcia.dll29serial.dll26HPC2AppsHPC2Apps配置代表了用于Handheld PC上的完整系统。HPC2Apps的配置包括了 MinComm系统中的所有组件,并 添加了所有与Windows相关的API函数(如CreateWIndow)。模块ROM (K) RAM (K)Stack (K)nk.exe119 K464filesys.exe122 K94gw

13、es.exe508 K7247device.exe15 K7810coredll.dll122除了在MinComm配置中列出的DLLs外,该配置的ROM中还包括了下列DLLs。模块ROM (K)fatfs.dll54Prnport.dll5pcl.dll24Atadisk.dll9Sramdisk.dll7Waveapi.dll68ole32.dll150oleaut32.dll183dhcp.dll13Hwxusa.dll86netui.dll19查看 ROM 的使用通过查看Microsoft Windows CE ROM Image Builder工具Romimage.exe的输出,可以看

14、到文件在ROM中是如何放置的。(本文中的许多数字就是从Image Builder工具的日志文件中得到的)文件被分成多个部分并放入ROM中。通过Windows CE开发工具可以将这些部分描述如下。部分描述.text代码.rsrc资源数据.data数据.pdata在代码部分每个函数的调试和异常处理信息.CRT特殊部分C+卡构特殊部刀C+结口T构.KDATA特殊部分仅出现在核心当中(Nk.exe)Romimage是一个命令行工具。从一个典型的Romimage部分输出的头几行包括:程序的标题、页面大小和MODULES 部分的起始位置等。Windows CE ROM Image Builder v1.0

15、 Copyright Microsoft 1995.Copying d:WINCEreleaseodo2bpp.dll to d:WINCEreleaseddi.dll for debugger. Copying d:WINCEreleaseodo2bpp.pdb to d:WINCEreleaseddi.pdb for debugger. Setting PageSize to 1024DumpSymbols: pTOC found at00000e50 MODULES Section在MODULES部分的第一个条目Nk.exe ,的大小为116268 = 0x1c62c字节。这个实际的大小

16、被扩大到下一个1024 字节的边界上,116736 = 0x1c800,并且被放置到ROM中。这便留下了一个468字节的“洞”,可以提供给其他文件使 用。同样,在0x8c63b210地址处有一个496字节的“洞”,它出现在Coredll.dll .rsrc部分的最后一个页面的末尾。在放置完所有的.text (代码)部分后,Romimage开始将小于一页的数据部分放置到这些“洞”中。例如,在稍后的MODULES部分中,相同的Romimage日志包含了下列信息:ModuleSectionStartLengthpsizevsizeFillercoredll.dll .data 8c61ca2ch 4

17、4200 FILLERcoredll.dll .pdata 8cb32800h 48684866 8064 filesys.exe .data 8cb33b04h 12236 12234 21376filesys.exe .pdata 8cb36ad0h 21522149 2640 gwes.exe .data 8cb37338h 10796 10794 17828 gwes.exe .pdata 8cb39d64h 12456 12456 15768device.exe.data8c61ca30h213213276FILLERdevice.exe.pdata8c63b210h34134142

18、4FILLERfatfs.dll.data8c659c84h366366504FILLERfatfs.dll.pdata8cb3ce0ch132413221624shell.exe.data8cb3d338h160816052864shell.exe.pdata8c61cb05h183183208FILLERCoredll.dll的第一个.data数据部分的大小是4字节,被放置在第一个可以使用的“洞”中,0x8c600400 + 0x1c62c =0x8c61ca2c。它仅用了 4个字节,将下一个要填充的地址移动到0x8c61ca30并将该“洞”缩小为464字节。下一个小于一页的.data数据

19、部分是Device.exe的数据部分,它需要213 = 0xd5字节,而且在第一个洞剩余的空间足 够容纳它。它被放置到此处,将地址变为0x8c61cb05,将该“洞”缩小为251字节。device.exe .data 8c61ca30h213213276 FILLERDevice.exe 的.pdata部分为341字节,比这个洞剩余的空间大,因此它被放置到另一个洞Coredll.dll资源部分最后一个页面上的“洞”,起始位置是0x8c63b210。device.exe .pdata 8c63b210h341341424 FILLER接下来的.data或pdata部分都比第一个洞剩余的251字节

20、小,其中调试器命令解释器Shell.exe的.data部分为183 字节。它被放于第一个“洞”的下一个有效的起始地址0x8c61cb05处。shell.exe .pdata 8c61cb05h183183208 FILLERRomimage 工具按照这种方式继续工作直到所有的部分全都被放置好。任何剩下未被使用的“洞”都被列在报告中:Unfilled ROM Holes(Address,Length):8c9cfbf8h8 8caef3f8h8 8cb253f8h8 8cb2bff8h88c769bf9h7 8c8d4ffah6 8c8f37fah6 8c98dffah68cb16ffah6 8

21、cb1d7fah6 8cb327fah6 8c61dbfbh58c6e6ffbh5 8c763ffbh5 8c855ffbh5 8c935bfbh58c9877fbh5 8c7537fch4 8c765bfch4 8c7bcffch48c7d3bfch 4 8c80dbfch 4 8c82f3fch 4 8c8f27fch 48c938ffch 4 8c9c17fch 4 8c9e23fch4 8ca6e7fch 48cacfbfch 4 8cb20bfch 4 8c61cbfdh3 8c659ffdh 38c6e13fdh 3 8c6e23fdh 3 8c6e87fdh3 8c6ee7fdh

22、 38c63b3feh 2 8c74fffeh 2 8c785ffeh2 8c7b8ffeh 28c7c23feh 2 8c9717feh 2 8c99d7feh2 8cb09ffeh 28cb227feh 2 8c63afffh 1 8c65a3ffh1 8c6ea7ffh 18c788fffh 1 8c793fffh 1 8c9727ffh1 8c9a8bffh 18ca83bffh 1 8cacf7ffh 1 8cb047ffh 1 8cb0bfffh 1识别FILLER部分的能力是十分重要的,因为执行体和DLLs的大小和数量对于不同的配置有所不同。这将影响可使 用的“洞”的大小,并影响

23、所需的全部内存量。要确定每个模块的ROM使用情况,可以根据Romimage工具输出的该模块各部分的大小计算出总和并且除去那 些作为填充“漏洞”的部分。因为填充部分是被插入到可以使用的“洞”中的,所以它不会增加该模块的内存需求量。查看虚拟内存使用Memtool工具可以查看每个虚拟内存页面。Memtool提供了对每个进程都有效的32(MB)内存的一个完整映象。 内存映象可以看出代码和数据是否在ROM或RAM。Memtool 还可以显示出当前堆栈使用情况的摘要。堆栈的大小可以根据需要动态增大或缩小。显示出的堆栈数可能并 不代表最大需求量。它们描述了堆栈在使用Memtool工具检查时的状态。例如,Fi

24、lesys.exe进程内存映象的头几行显示了各种不同的用法。每个符号表示一个内存页面并指示出该页面的使用 情况:Memory usage for Process 8c056d2c: filesys.exe pid 1Slot base 04000000 Section ptr 8cfe4c0004000000(1): r04010000(0):04020000(0):04030000(0): CCCCCCCCCCWWWWWWWWWWWWWWWWWWWWW-R04040000(0): SSSSSSS04050000(0):PPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

25、OOOOOOOOOOOOOOOOOOOOOOOOOOO连字符(-)表示该页面被保留;小写 r 表示在 RAM 中的数据;大写 C 表示 ROM 中的代码;大写 W 表示在 RAM 中的 可读/写数据;大写R表示ROM中的数据;大写S表示堆栈;大写P表示外围设备的内存(不能被核心分配但是可以 被Gwes或设备驱动程序映射);大写O表示目标存储设备。除了这些符号外,小写c表示正在RAM中执行的代码。在内存映象后,Memtool工具显示了摘要信息。类似的信息还可以用Ppsh工具和MI命令得到,这些信息显示如下:Memory usage for Process 8c036d2c: filesys.ex

26、e pid 1Slot base 04000000 Section ptr 8c5e7000Page summary: code=207(0) datar/o=2 r/w=7 stack=1 reserved=13963在页面摘要中,code后面的值表示ROM中的页面数。圆括号中的数字表示了 RAM中的页面数。数据页面中分别表 示了只读或读/写页面数。Stack后面的值表示了堆栈所用的页面数。要得到其他微处理器和其他平台上的内存需求信息,可以使用ROM Image Builder、Ppsh或Memtool工具来查看它们的输出信息。这些工具的完整文档可以在Microsoft Windows CE Embedded Toolkit for Visual C+ 5.0中找到。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!