winCE的内存管理
早期winCE的存储设备一般采用ROM+MAM,ROM保存CE内核文件,应用程序,而RAM用于内核,所有应用程序运行时使用。后出现了永久存储设备。Flash,IDE。取代了ROM。
在ROM中存放的所有文件可是压缩的也可以是不压缩的。这取决于OEM。对于ROM中存放的模块来说。如果是压缩的,模块在运行前先解压并全部存放在RAM中。如果不是压缩的。并且ROM介质支线性访问,就可以本地执行(XIP)。
XIP加载运行方式的缺点就是执行速度相对较慢。在实时性的内核中,一定不能选用XIP。
内核运行时。内核镜像由加载程序解压并将系统文件加载到RAM的NK,NK是在config.bib文件中定义的一段RAM区域,专用于保存内核镜像解压出来的所有文件。winCE将NK看做ROM。
winCE的DLL分为XIP DLL和非XIP Dll。
RAM文件系统专用于对象存储。winCE启动时把除了NK以外的RAM分为对象存储区域和应用程序内存区域。并且默认各占一半RAM.后来。对象存储的作用就被永久存储器替代了。
winCE只能管理512M的物理内存和4GB大小的虚拟地址空间。X86系列和ARM系列的CPU在启动过程中内核会将现有物理内存地址全部映射到0x8000 0000以上的虚拟地址空间中供内核以后使用。
整个4GB虚拟地址空间主要划分为两部分,0x8000 0000以上为内核使用部分,0x8000 0000 以下为应用程序使用部分。