系统分层模型:
图上面四层主要由微软公司维护开发,下面两层主要由嵌入式产品开发商根据产品需要开发。
从接口的角度讲,一般开发环境包括应用和系统两个界面用以支持系统和应用开发,例如在桌面WIndows平台,SDK(软件开发工具 包,software Development Kit)代表了应用层界面,而DDK(驱动程序开发工具包,Driver Development Kit)代表了系统界面,两个界面之间就是操作系统的实体。CE操作系统的功能在中间两层得以实现,应用支持库的上部和操作系统层的上部以及下部具有接口 性质,它们构成了CE 的应用界面和系统界面。
迁移模型:
可移植性体现在两个层面上:应用的可移植性以及系统关于硬件平台的可移植性,相应的迁移模型也分为应用迁移模型和系统迁移模型。
应用迁移模型:
应用迁移模型的核心就是软件接口技术和应用开发工具的软件集成。从图中可以看到,应用层的接口很丰富,其中最基本的就是Win32 API,在它之上是MFC、ATL 这样的接口。.NET 则是新一代的Windows 应用框架。这些软件层为应用提供了应用模型,而开发工具则直接支持这些编程模型,例如,VC 提供了向导工具,帮助生成代码。
系统迁移模型:
系统迁移模型帮助Windows CE .NET 实现广泛的硬件支持。这也采用了工具和软件接口技术集成的形式。这一层次的可移植性主要在三个层面展开:CSP 支持不同的处理器体系结构;BSP 支持不同的硬件底板;Drivers 支持不同的外设。从工具的角度看,开发工具主要是以向导的形式帮助开发者配置修改一个具体的OAL。驱动模型被包括在Windows CE.NET 的类驱动中实现,这些类驱动一般由Windows CE .NET 操作系统提供。
具体模块介绍:
1. 内核模块(代码位于%wince%/Private/WinCEos/NK 目录下)
内核模块在系统运行时体现为NK.exe,它是CE 操作系统真正的核心,主要完成6 类功能:处理器调度、内存管理、异常处理、系统内的通信机制、为其他部分提供核心调用例程、为系统范围内的调试提供支持。NK.exe 的代码非常紧凑,始终运行在较高的优先级和处理器特权级别上,一般除了中断处理例程外,系统内其它的线程不能抢占内核,并且在虚拟存储管理模式下,内核也 总是被禁止换出的,它被存放在系统存储空间从0xC2000000 起始的位置。
2. CoreDLL (代码位于%wince%/Private/WinCEos/core 目录下)
CoreDLL 在系统中具有举足轻重的地位,它实际上隔离了应用和操作系统的其它模块,是使系统稳定的一个保护性屏障。它提供了两类功能:外部调用系统功能的代理以及类 似字符串处理、随机数生成、时间计算等基本支持函数。前者是主要的功能,它实现了系统API 的管理和按名调用,系统调用的核心过程就发生在这里。这一模块在运行时体现为CoreDLL.dll,它是第一段被加载的系统共享代码。
3. 设备管理模块 (代码位于%wince%Private/WinCEos/device 目录下)
这是Windows CE .NET 的设备管理的核心,运行时表现为Device.exe。它提供系统范围内基本的设备列表管理、即插即用管理、电源管理、I/O 资源管理并实现了设备驱动程序得以工作的基本机制。
4. 文件管理模块 (代码位于%wince%/Private/WinCEos/FSD 和WINCE420/Private/WinCEos/Storage 两个目录下)
文件管理模块提供基本的文件管理能力,包括对象存储和文件系统,运行时主要体现为 filesys.exe。
5. GWES 模块 (代码位于%wince%/Private/WinCEos/GWE 目录下)
这个模块是Windows CE .NET 提供的图形用户界面的实现部分,它提供几个主要的功能:基本的绘图引擎、窗口管理、界面的事件机制等。这个模块运行时为GWES.exe。
6. 网络通信模块 (代码位于%wince%/Private/Comm 目录下)
在整个Windows CE .NET 系统中,网络通信模块是最为独立的一部分,它运行时体现为一系列的动态链接库,这一部分牵涉到较多的Windows 平台公共特性。
7. OAL 模块
这个模块没有确定的形态,主要包括和硬件相关的若干功能,例如处理器的专用支持代码、总 线控制器的驱动、系统引导程序、系统初始化程序等。一般来说OAL不具有可移植性。
8. 设备驱动模块
设备驱动模块实际上并不是一个单独的软件实体,而是一个由驱动程序实体构成的集合,它包 括很多具体内容,运行形态也比较复杂。它的特殊性体现在它实际上是多个其它模块的底层,例如网络通信模块的下层就是驱动层,NDIS 实际上可以看作是一个具体的类驱动程序。特殊性还体现在它是散布在系统中的,有大量的驱动分布在OAL 中,而系统服务和协议也可以看作驱动,它们由不同的模块管理,例如service.exe 和gwes.exe。
9. Win32 系统服务模块
Win32 系统服务是Window CE .NET 对应用程序提供的接口实现,多数公用的系统管理函数例如产生线程等都实现在NK 当中。这个模块也很特殊,原因类似驱动模块,它实际上也包含多个模块的上层对外功能接口。在早期的CE 实现版本中有一组基本的API 函数管理API 集合,系统和用户可以通过这组函数将自定义的接口注册到系统服务调用代理中,因为系统稳定性的缘故,目前这些函数只能在系统内部使用,例如和设备管理相关 的Win32 API 就是通过这组函数注册的。