读书笔记----深入理解WinCE

 

张冬泉老师的《wince 实用开发技术》读书笔记。

1、系统架构

CE被设计为一种分层结构,从底层向上分别为硬件层、OEM层、操作系统层和应用层。

OEM层由如下模块组成:OAL(OEM适配层)、启动加载程序(Bootloader)、配置文件和驱动程序。

OEM层的代码构成中主要由CSP和BSP代码组成。CSP支持不同的微处理器体系结构,而BSP支持不同的微处理器扩展和外设,它由Bootloader、OAL和驱动程序组成。

2、文件系统

CE的文件系统和数据存储都指的是对象存储,对象存储是CE的默认文件系统,它相当于CE设备上的硬盘。

对象存储是由共享一个内存堆的文件系统、数据库和注册表组成的。

CE下没有盘符的概念,每个存储设备或存储设备分区都是根(/)下的一个目录。

 

对象存储大小限制为256M的RAM,对象存储具有压缩属性,所以实际能够包含的数据量可以达到512M。

对象存储大小是可调整的。

 

CE提供三种类型的文件系统:

基于ROM的文件系统

基于RAM的文件系统

FAT文件系统

另外开发者也可以创建和注册属性文件系统。

 

CE的注册表是一个系统数据库,用来存储关于应用程序、驱动程序、用户配置及其它配置的数据。

CE文件系统和所有与文件相关的操作都是通过Filesys.exe进程进行管理的,通常将它称为文件管理器。

文件管理器实现了对象存储和存储管理,并将所有文件系统统一到一个根“/”下面的单个系统中。

3、内存管理

CE是一个保护模式的32位操作系统,它的程序访问只能使用虚拟内存。

CE中有两种类型的地址:物理地址和映射的虚拟地址。

 

用户地址空间被分为64个32M的slot,所能进程分享这个地址空间。

在CE内核中,slot是虚拟地址维护的基本单元。在从slot0到slot63的64个slot中,前面的33个用于进程,剩下的slot用于对象存储、内存映射和资源映射。Slot0是一个特殊的slot,它对应当前正在运行的进程。Slot1至slot33每一个都代表一个当前正在运行的进程。

4、系统调度

CE支持两种类型的模块:应用程序(以.exe为扩展名)和动态链接库(以.dll为扩展名)。

当CE加载一个应用程序时,它就产生了一个进程,一个进程就是一个应用程序的实例。

每个进程都有自己受保护的32M地址空间。

每个进程至少有一个线程,但也可能有多个线程,线程是执行在一个进程之内的代码。

多个进程使用户可以同时工作于多个应用程序,而多个线程可以使一个应用程序同时完成多个任务。

CE是一个抢占式实时多任务的操作系统。

 

 

CE下的模块由EXE文件和DLL文件组成。EXE是可以独立加载的模块;DLL不能独立加载,它必须由一个正在运行的EXE模块或另一个DLL模块加载。

DLL有两种加载方式:隐式加载方式和显式加载方式。

 

CE是一个多进程操作系统,并支持最多32个进程。

CE启动时会加载4个进程:NK.exe、Filesys.exe、GWES和Device.exe。在实际使用时还会加载几个别的进程,如shell进程等,所以用户可加载的实际进程数约为24个左右。若不够用可以考虑使用多线程代替使用多进程。

一个进程可以创建若干进程,这是没有上限的,但它也受设备实际可用RAM及线程栈可用进程地址空间的约束。

启动一个进程的方式:

第一种:系统启动时由系统自动加载。

第二种:系统启动后通过操作键盘或鼠标可视地去进行加载。

第三种:是隐式加载方式,即通过一个正在运行的进程加载启动另一个进程。

 

一个进程就是一个可执行单元,当操作系统创建一个进程时,同时也会创建一个线程,使用线程是为了尽可能有效地利用CPU时间。

线程有5种状态,分别为:运行、挂起、休眠、阻塞和终止。

CE支持0~255共256个优先级,其中0优先级最高,255优先级最低。

每个线程都有自己的优先级。

CE系统是根据线程的优先级和线程量来调度每一个线程的。

线程量是分配给线程运行一次占用的CPU时间片。

为了设置和获得一个线程的优先级,可以使用CeSetThreadPriority函数和CeGetThreadPriority函数。

当创建一个线程而没有设置优先级时,其优先级默认为251。

CE支持线程优先级倒置。

线程量是线程在一个CPU时间片的持续时间。

每个CE系统都有一个默认的线程量,通常是100ms,但是OEM可以改这个默认值。通过在OAL的OemInit函数中设置dwDefaultThreadQuantum全局变量的值来达到。默认线程量必须大于0。

每个线程都可以通过调用CeSetThreadQuantum函数设置自己的线程量。

 

纤程是另一个可以在应用程序中使用的多线程对象。

为了协调各个线程的活动CE中引入了同步对象,它包括:关键区、信号量、互斥体、事件、互锁函数及点对点消息队列。

 

原文链接:http://blog.csdn.net/a443453087/article/details/4832723

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值