一般来说,注册表记录着所有应用程序和硬件外设的驱动信息。因此,在启动过程中系统需要读取注册表的信息。WinCE注册表提供了两种实现方式:基于RAM的注册表(RAM-Based Registry)和基于Hive的注册表(Hive-Based Registry)。注册表实现类型对于用户和应用程序来说是透明的,但是采用不同的类型会影响Windows CE的启动顺序和启动速度。
基于RAM的注册表方式的缺点是需要两次启动,在启动过程中必须多一次热启动才能使恢复的注册表有效,因此效率相对比较低。而基于Hive的注册表是让人很兴奋的事情,因为基于Hive技术时启动系统会自动加载数据,免去了热启动的麻烦。实际上,也可以认为只有拥有了这样的技术,基于Windows CE的产品才算是一个真正的电脑。基于Hive的WinCE注册表加载过程可分为两部分:boot.hv和system.hv。
前者是启动时的注册表项,后者是系统注册表项。所以,Hive注册表会先加载boot.hv,把注册表保存所在的存储驱动和文件系统先加载;然后再加载system.hv,也就是从磁盘上去读系统的注册表项。在启动时加载boot.hv的标签是HIVE BOOT SECTION 和END BOOT SECTION。
因为Boot Hive和System Hive可能有重复的地方,所以可能会重复加载了驱动或重复启动了应用程序。为此,Windows CE允许在描述驱动程序的注册表信息中加入防止重复的标志。因此,在启动过程中,当对WinCE注册表处理不当时就会需要花费不少的启动时间。
3.加快启动WinCE的策略和方法
为什么有些WinCE系统能够启动得特别快呢,是有加速的策略和方法吗?答案是肯定的。只要经过精心的调试,加快WinCE启动是完成有可能的。简单说就是“精简系统,按需加载”,也就是以精简和合理的加载顺序和加载内容来加快系统的启动。
(1)选择合适的WinCE内核的运行类型
WinCE可以在NOR Flash上直接运行,也可以加载到内存中运行。直接运行是把内核的可执行映像烧写到Flash上,这样就能快速启动一个应用程序。而内核加载方式是把内核的压缩文件存放在Flash上,启动时先解压,再执行。