WinCE中的进程(process)是程序的一次动态执行实例(instance)。进程不参与系统调度,没有优先级和上下文。每个进程在创建时都会创建一个主线程作为其默认的执行体。
真正参加系统调度的是线程。
WinCE提供了互斥Mutex,事件Event,信号量Semaphore 3种内核机制来实现多线程间的同步。
WinCE还为用户态线程提供了两种同步方法:临界区段(Critical section)和互锁函数(interlocked function),这两种方法不能跨进程使用,但效率很高。
WinCE提供 的进程间的通信方式有剪贴板(clipboard),COM/DCOM,网络套接字(socket),文件映射(File mapping)及点对点消息队列(point to point message queues)等。其中,文件映射和点对点消息队列最为常用。文件映射在进程的共享虚拟空间保留一个区域,将文件所在的物理地址映射到该区域,这样通过读/写虚拟内存就能实现对文件的操作。
WinCE采用层次化的结构进行内存管理,从上到下依次为物理内存、虚拟内存、逻辑内存和C/C++语言运行库。
逻辑内存分为堆和栈两种,用于程序代码中的动态和静态内存分配;堆是进程中一块连续的虚拟内存地址空间,应用程序可以在其上动态的进行内存的申请和释放,每次堆上内存的申请量为4B或8b;栈用于进程中的函数调用等,栈从高地址到地地址增长。
应用程序的发布涉及代码签名和代码打包两个方面。代码签名是出于信息安全的考虑,经过了代码签名才能使运行的WinCE不受功能性限制;代码打包即把应用程序制作成便于在WinCE下执行的.CAB文件,她需要一个描述安装包的.INF文件,可以使用的打包工具软件是CabWiz.exe 。
WinCE定制的一半设计流程:
1. 得到并安装于开发板相对应的BSP。
2.定制WinCE操作系统。根据具体的应用需求,选择合适的os组件,并且构建运行时映像。os的配置分为两大类:HLBASE 没有图形界面、IABASE有图形界面。统称为CEBASE。
WinCE运行时映像有以bin和nb0为扩展名的两种格式。bin是WinCE默认的映像格式,她按段组织文件内容,该文件不能直接执行,必须按一定格式解开到内存中才能执行;nbx文件可下载到闪存中,并可从山村中本地执行XIP(execute in place)。
3.把运行时映像下载到开发板上进行调试。
4.发布操作系统。