Windows CE 提供了灵活的内存存取机制,使系统中不同类型的应用程序可以充分的使用系统提供的RAM、ROM 以及Flash Memory,并选择性的有效利用处理器提供的虚拟内存,内存保护等功能。内存管理可以划分为三个部分:实体页面管理,主要负责追踪系统中物理内存的使用情况,为换页程序选取可用的实体页面,释放不使用的实体页面等;虚拟内存管理,主要管理系统的内存地址对应页面的换进换出等;heap 管理,主要管理处理程序空间内部的动态内存释放与回收,以支持程序的动态数据结构。
系统中的32 位虚拟地址提供了4GB 的虚拟内存空间,对于嵌入式应用来说,内存一般很小,因而系统在使用内存方面作了些限制,以提供更高效能的储存空间管理。这些限制包括:大量的系统保留空间,实际上这些地址空间,通常不对应到任何的实体页面;系统处理程序数最多只有32 个,每个处理程序的实际可使用内存空间受到限制 (32MB);有固定的处理程序共享内存;有ROM 地址的对应等。
Windows CE 使用如图1 的内存配置 (memory layout)。
图1:WinCE的内存配置
由于限定了处理程序空间的大小和处理程序的数目,内存配置 (memory layout) 变得相对简单,系统提供33 个Slot 供这些处理程序使用,其中,Slot 0是全域的共享内存,底部的一些Slot 由重要的系统处理程序使用,kernel 部分的静态虚拟地址 (Static Virtual Addresses) 专门用来对应ROM、外围设备等资源。
NK Slot 即NK.EXE 的处理程序空间,NK.EXE 是一个在kernel mode 的处理程序,包括了操作系统kernel 的程序代码。对物理内存相对比较紧缺的系统来说,对处理程序空间和处理程序数目的限制,将能有效的纾解内存系统可能的压力。例如,某个应用系统限制6 个处理程序,那么系统对应中,将永远不会用到第7 个的Slot,系统作地址对应,将不考虑别的部分。