📄 00000023.htm
字号:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>MicrosoftWindows CE 的内存使用 turbolinux </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人: chschs (升格), 信区: Embedded <br />标 题: MicrosoftWindows CE 的内存使用 <br />发信站: BBS 水木清华站 (Tue May 9 10:52:33 2000) <br /> <br /> <br />MicrosoftWindows CE 的内存使用 <br />John Murray <br />1997.9 <br />介绍 <br /> Microsoft?Windows? CE是组件化的操作系统,它可根据目标设备或平台的不同特点 <br />进行定制。原始设备制造商(OEM)或嵌入系统开发者可以选择所需的系统模块和组件, <br />将其提供给用于目标平台的操作系统。所选择的模块和组件确定了它的内存需求情况。 <br /> <br /> 一个模块表示一个完整的功能区域,在系统软件中可将其表示出也可以不将其表示 <br />出。如果不需要该功能,那么可以将整个模块忽略。例如,用一个名为“serial”的简 <br />单的模块提供出所有串行端口的功能,可以将其包括在系统中也可以不包括。 <br /> 一些大的模块可以进一步分成几个组件。这使得OEM厂商可以通过仅仅包含OEM设备 <br />的需要的组件,定制出这些模块更小的版本。例如,文件系统模块包括RAM文件系统、R <br />OM文件系统、注册表和数据库几个组件。OEM可以(按照一定的限制)组合这些文件系统 <br />的组件使之满足目标系统的需要。 <br /> 为了帮助OEM和嵌入系统开发者做决定,这对于了解给定模块或组件的内存耗费情况 <br />是十分有用的。本文将讲述Windows CE 2.0操作系统是如何使用内存的,并列出对于所 <br />选的Windows CE系统配置中主要系统模块和组件的内存需求情况。同时也将讲述如何使 <br />用Windows CE工具查看其他配置情况下的内存需求情况。 <br /> 对于Windows CE 2.0版,微软已经创建并测试了这些模块和组件的几种基本配置。 <br />这些配置代表了不同的几组系统性能,从仅带有最小用户输入并且没有显示能力的基本 <br />系统,到用于手持PC(H/PC)上的具有Microsoft Windows全部外观和感觉的完整系统。 <br /> <br /> 每个配置都是建立在前一个配置的基础上的。下列表格列出了在本文中被讨论到的 <br />被测试过的配置。 <br />配置 <br /> 描述 <br />最小输入系统(MinInput) <br /> 核心、基本文件系统、注册表和基本用户支持。基本用户支持包括:对消息队列、触摸 <br />板、键盘输入设备、声音、电源、发光二极管(LED)提示和机器空转的支持。 <br />最小图形显示接口(MinGDI) <br /> MinInput并加上最小的GDI(基本绘图元、设备上下文)。 <br />最小通信(MinComm) <br /> MinInput并加上通信堆栈(传输控制协议/Internet协议[TCP/IP]、点对点协议、电话 <br />应用程序编程接口[TAPI],串行端口、网络设备/驱动接口描述[NDIS]、红外线数据联接 <br />[IRDA])。 <br />Windows用户接口(UI)配置(HPC2Apps) <br /> MinComm并加上所有和Window相关的API函数(例如CreateWindow),这就是用于H/PC上 <br />的版本。 <br />系统内存的使用 <br /> 典型的Windows CE设备包括ROM和RAM内存。当设备被关闭时,设备也可以通过使用 <br />充电的后备电池而继续维持RAM中的内容。 <br /> 系统内存可以按照下列表格中描述的情况分类。 <br />内存 <br /> 描述 <br />ROM <br /> 包含Windows CE的执行体和其他系统文件。这些文件的文本(代码)和只读数据部分是 <br />未被解压到执行位置(XIP)的部分。 <br />RAM——存储内存 <br /> 包括文件系统(包括注册表和Windows CE数据库)。包括可读/写数据区。 <br />RAM——程序内存 <br /> 工作RAM. <br /> ROM包含未解压到执行位置(XIP)的文件,包括系统执行体、动态链接库(DLLs) <br />和被捆绑的应用程序如Microsoft Pocket Word。这些文件都起始于页面的边界。ROM还 <br />包括这些应用程序所使用的各种文件,如字体、声音和位图。这些文件中的大多数被压 <br />缩了(除了一些字体例外)。代码和执行体的只读部分以及DLLs被解压到启用的执行位 <br />置。由于可读/写部分在指定的RAM,它们将在那里被压缩。 <br /> 为了节省空间,这些小文件和被压缩的可读/写区中的许多被放置在内存的缝隙中。 <br />这些缝隙是放置在ROM中的代码或只读内存区的最后一页省下的空间。 <br /> 压缩ROM中的执行体或DLL也是可能的。当这类执行体运行时,请求换页程序将所虚 <br />页面解压并将它们装入RAM。 <br /> RAM被分成两个部分:存储内存和程序内存。存储内存包括注册表、文件系统和数据 <br />库。文件系统包括由用户安装或创建的应用程序和数据文件。在文件系统中的所有文件 <br />都是被压缩的。程序内存是由系统使用的并用于运行应用程序。用户在任何时刻不需重 <br />新启动,就可以重新调整对存储内存和程序内存的划分。 <br /> 用户安装的应用程序压缩驻留在文件系统中。代码和数据需要被解压到程序内存来 <br />执行。请求换页被支持——当一个用户安装的应用程序被启动时,仅有一小部分应用程 <br />序需要被解压到程序内存。 <br /> 除了数据部分,每个执行体通常都耗费一定量的程序内存用于它的堆栈数据。堆栈 <br />通常可以动态增加或减少。 <br />Windows CE Version 2.0 的内存使用 <br /> 下列表格显示了带有SH3微处理器的HitachiD9000开发平台上的内存使用情况。RAM <br />和栈的数值是在启动后Memtool实用程序检查系统状态时取得的。这些数据是按照下列方 <br />式计算出的: <br />ROM (代码和只读数据)。列于Romimage实用程序输出模块的所有部分的总合。 <br />RAM。通过Memtool实用程序和Ppsh实用程序内存信息(mi)命令在页面总计处列出的可 <br />读写数据。 <br />Stack。通过Memtool实用程序和Ppsh实用程序内存信息(mi)命令在页面总计处列出对 <br />于栈的数值。 <br />尽管Memtool和Ppsh实用程序显示出每个进程在RAM中只读数据,但是这个内存常常仅代 <br />表核心分配出的共享内存。这个共享内存物理上仅消耗核心所使用的一个页面。因此, <br />带有尺寸为1的只读页面的模块并没有计算到模块RAM的需求。额外部分包括核心和只读 <br />页面尺寸大于1的模块。由于这些额外部分,RAM的需求可以算成是只读和可读/写部分的 <br />总和。 <br />MinInput <br /> MinInput系统代表一个具有最小输入的系统。它包括核心、基本文件系统、注册表 <br />和基本用户的输入支持。基本用户的输入支持包括:对消息队列的支持、触摸面板、键 <br />盘输入设备、声音、电源、提示LED和空转控制。 <br /> 下列表格是以千字节为单位(K)显示出在系统刚刚启动后,MinInput的详细配置值 <br />。 <br />模块 <br /> ROM (K) <br /> RAM (K) <br /> Stack (K) <br />Nk.exe <br /> 119 <br /> 5 <br /> 4 <br />Filesys.exe <br /> 57 <br /> 6 <br /> 1 <br />Gwes.exe <br /> 60 <br /> 9 <br /> 3 <br />Coredll.dll <br /> 94 <br />这个配置的ROM中还包括了下列DLLs。 <br />模块 <br /> ROM (K) <br />Toolhelp.dll <br /> 2 <br />Keybddr.dll <br /> 8 <br />Touch.dll <br /> 12 <br />MinGDI <br /> MinGDI系统代表一个带有GDI的最小系统。MinGDI系统包括了MinInput系统中的所有 <br />组件,并添加了基本绘图元和设备上下文。 <br /> 下列表格显示了在系统刚刚启动后,MinGDI的详细系统配置值。 <br />模块 <br /> ROM (K) <br /> RAM (K) <br /> Stack (K) <br />Nk.exe <br /> 119 <br /> 7 <br /> 4 <br />Filesys.exe <br /> 122 <br /> 7 <br /> 1 <br />Gwes.exe <br /> 282 <br /> 697 <br /> 4 <br />Coredll.dll <br /> 103 <br />除了在MinInput配置中列出的DLLs外,该配置的ROM中还包括了下列DLLs。 <br />模块 <br /> ROM (K) <br />Ddi.dll <br /> 29 <br />Wavedev.dll <br /> 15 <br />MinComm <br /> MinComm配置代表一个带有最小通信能力的系统。MinComm系统包括了MinInput系统 <br />中的所有组件,并添加了一些通信堆栈(TCP/IP、PPP、TAPI、Serial、NDIS和IRDA)。 <br /> <br /> 下列表格显示了在系统刚刚启动后,MinComm的详细系统配置值。 <br />模块 <br /> ROM (K) <br /> RAM (K) <br /> Stack (K) <br />nk.exe <br /> 119 <br /> 31 <br /> 4 <br />Filesys.exe <br /> 86 <br /> 9 <br /> 1 <br />gwes.exe <br /> 45 <br /> 12 <br /> 1 <br />Device.exe <br /> 15 <br /> 67 <br /> 8 <br />coredll.dll <br /> 128 <br />除了在MinInput配置中列出的DLLs外,该配置的ROM中还包括了下列DLLs。 <br />模块 <br /> ROM (K) <br />ppp.dll <br /> 64 <br />cxport.dll <br /> 6 <br />Ircomm.dll <br /> 7 <br />Winsock.dll <br /> 18 <br />secur32.dll <br /> 19 <br />Schannel.dll <br /> 111 <br />Ntlmssp.dll <br /> 14 <br />afd.dll <br /> 39 <br />arp.dll <br /> 19 <br />ndis.dll <br /> 42 <br />ne2000.dll <br /> 21 <br />tcpstk.dll <br /> 98 <br />irdastk.dll <br /> 55 <br />tapi.dll <br /> 17 <br />Unimodem.dll <br /> 21 <br />redir.dll <br /> 74 <br />Netbios.dll <br /> 25 <br />Wininet.dll <br /> 105 <br />Pcmcia.dll <br /> 29 <br />serial.dll <br /> 26 <br />HPC2Apps <br />HPC2Apps配置代表了用于Handheld PC上的完整系统。HPC2Apps的配置包括了MinComm系 <br />统中的所有组件,并添加了所有与Windows相关的API函数(如CreateWindow)。 <br />模块 <br /> ROM (K) <br /> RAM (K) <br /> Stack (K) <br />nk.exe <br /> 119 K <br /> 46 <br /> 4 <br />filesys.exe <br /> 122 K <br /> 9 <br /> 4 <br />gwes.exe <br /> 508 K <br /> 724 <br /> 7 <br />device.exe <br /> 15 K <br /> 78 <br /> 10 <br />coredll.dll <br /> 122 <br />除了在MinComm配置中列出的DLLs外,该配置的ROM中还包括了下列DLLs。 <br />模块 <br /> ROM (K) <br />fatfs.dll <br /> 54 <br />Prnport.dll <br /> 5 <br />pcl.dll <br /> 24 <br />Atadisk.dll <br /> 9 <br />Sramdisk.dll <br /> 7 <br />Waveapi.dll <br /> 68 <br />ole32.dll <br /> 150 <br />oleaut32.dll <br /> 183 <br />dhcp.dll <br /> 13 <br />Hwxusa.dll <br /> 86 <br />netui.dll <br /> 19 <br />查看ROM的使用 <br /> 通过查看Microsoft Windows CE ROM Image Builder 工具——Romimage.exe的输出 <br />,可以看到文件在ROM中是如何放置的。(本文中的许多数字就是从Image Builder工具 <br />的日志文件中得到的) <br /> 文件被分成多个部分并放入ROM中。通过Windows CE开发工具可以将这些部分描述如 <br />下。 <br />部分 <br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -