必须知道OS和设备驱动器的中数据匹配最大时间。
设备驱动器用来处理一个中断最大时间和关于这些驱动器的中断申请信息必须清楚。
中断响应(从中断到运行时间),必须可预测并满足功能要求。
每次系统调用时间必须可以预测,并且独立于系统的对象数目。本篇论文论述了微软Windows CE 操作系统是如何达到一个实时系统的要求,更有意义的是,Windows CE 保证一个时间的上限,它在收到中断后开始一个实时的优先级线程。本论文论述了对特定参考平台的中数据响应时间,参考为有 Hinathi SH3 的微处理器的 “Odo” 平台。
Microsoft Windows CE
概论
微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统。Windows CE 可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,这即是众所周知的硬盘压缩层(HAL),(在以前解释时,这被称为 OEMC (原始设备制造)适应层,即 OAL; 内核压缩层,即 KAL。 以免与微软的 Windows NT 操作系统 HAL 混淆)
不象其它的微软 Windows 操作系统,Windows CE 并不是代表一个标准的相同的对所有平台适用的软件。为了足够灵活以达到适应广泛产品需求, Windows CE 采用标准模式,这就意味着,它能够由一系列软件模式做出选择,从而使产品定制。另外,一些可利用模式也可作为其组成部分,这意味着这些模式能够通过从一套可利用的组份做出选择,从而成为标准模式,通过选择,能够达到系统要求的最小模式, OEM 能够减少存储脚本和操作系统的运行。
Windows CE 关于 VC++ 5.0 开发系统嵌入式工具包,提供系统库、工具、文本和样本代码,以使 OEMS 能够对特定的硬件平台使 Windows CE 标准定制。嵌入式工具包也包括设备驱动包(DDK)和软件开发包(SDK) ,DDK 提供了关于写驱动器的附加文本,SDK 提供库、头文件、样本代码、文本以允许,开发者对基于 Windows CE 的平台进行写操作。 Windows CE 提供了相同的程序界面,以用来为其它的视窗操作系统开发功能,例如,Windows CE 版本 1.01支持大约1000个微软的Win 32 API 函数的其中500个。这就意味着大量不同类的工具,第三方书籍,关于 Win 32 开发者训练教程,可以替代或为 Windows CE 系统的开发者所用。
Windows CE 是有优先级的多任务操作系统,它允许多重功能、进程,在相同时间系统中运行 Windows CE 支持最大的 32 位同步进程。一个进程包括一个或多个线程,每个线程代表进程的一个独立部分,一个线程被指定为进程的基本线程,进程也能创造一个未定数目的额外线程,额外线程实际数目,仅由可利用的系统资源限定。
Windows CE 利用基于优先级的时间片演算法以安排线程的执行,Windows CE 支持八个不同的优先级,由0到7,0代表最高级,它在头文件 Winbasw.h中定义。
优先权唯一的取决于线程优先级,拥有高级优先权的线程安排优先运行,同一优先级的线程,以循环优先先级方式运行,即每个线程接受定制的时间或时间片,定量时间默认值为25毫秒 (Windows CE 2.0 支持在 MIPS 平台更改定量时间)。较低优先权的线程,要直到较高级线程完成之后再运行,也即直到他们或者放弃或停止。一个重要的例外是最高优先级的线程(级别0,关键时间优先级)不与其它的线程共享时间片,这些线程连续执行直到他们完成。不象其它的微软窗操作系统,Windows CE 是固定不能改变,它不匹配基于这引进优先级的中断,他们能够暂时改动,但仅能通过 Windows CE 内核以避免所谓的的“优先权倒置”。
优先权倒置指的是当它们同时竞争同一资源时,低优先级的线程,阻碍了高优先权线程对资源的利用。为了改正这种局面并解放较高优先权的线程,Windows CE 允许低级优先权继承,严格的线程优先权,并且运行较高优先级直到它释放所用资源。
如同其它的 Windows 操作系统一样,Windows CE 为线程同步提供了一个丰富的“等待对象”,这包括关键部门、事件、互斥体,些等待对象,允许一个线程减缓它的运行并且等待直到指定事件发生。
Windows CE 将互斥体、关键部分、事件请求按“先入先出,优先级(FIFO)”顺序排列:不同的先入先出顺序序列定义成八个不同的优先级,在给定的优称级的线程请求,将被放在优先级列表末尾,当优先级倒置出现时,调度程序调整这些序列。
除了等待对象,Windows CE 支持标准的 Win 32 时间 API 函数,这些来自内核的应用,软件中断将获得时间间隔,它被用来管理实时应用。通过调用 GetTickCont 函数,它能够返回几毫秒,线程能够使用系统间隔时间。关于更详细的分时信息,Windows CE 内核也支持Win 32 API 函数QueryPerformanreCounter 和 QueryPerFormanteFrequency 。OEM 必须为这些调用提供硬件和软件支持,它提供一个较高的时间分辨力和 OAL 界面其它方面。
其它方面考虑
Windows CE 提供了一个重要的存储系统,例如,当目前某些运行 Windows CE 的平台提供 4MB 的物理内存,Windows CE 支持一个重要的 2GB 的地址空间,每个进程联接在它自己的32MB 物理空间上,当它需要产生内存分页中断(这可能影响线程执行时间),物理内存进行线程代码或数据内存分页。
Windows CE 允许映射,这将阴止多个进程共享同一物理内存,结果将会导致协同进程间或驱动器与映射快速的数据传送,内存映射能够戏剧性的增强实时操作。
中断处理: IRQS ISRS 和 ISTS
实时应用被设立在指定的时间间隔内,对外部事件做出反应,实时应用使用中断做为一种确保外部事件由操作系统获知的方式。在 Windows 中,内核和 OEM 适应层 (OAL)被设定成使系统其它部分的中断和调度最优化。Windows CE 平衡操作,并通过把中断过程分成两部分而使执行更加容易:它分为中断服务程序(ISR)和中断服务线程(IST)两部分。
每条硬件中断申请线(IRQ),与一个ISR相连。当中断成立和中断出现时,内核为此调用寄存的 ISR, ISR 为中断处理的内核模式部分尽可能短的保存。它首先将内核放在适合的 IST 上。
ISR 执行它的最小处理并返回一个 ID 号到内核,内核检查返回的中断 ID 号,并设置相关事件,中断服务线程等待事件。当内核设置事件时,IST 停止等待并开始执行,附加的中断进程,中断处理大部分实际上出现在 IST 中,两个最高的线程优先权 (级别0和1),通常指定为 ISTS,保证这些线程运行得足够快。
正如前面所说,处在最高级的 ISTS 不能被其它的线程占用,这些线程持续执行直到它们截止或放弃。
Windows CE 不能支持群体中断,这就意味着当以前一个中断处理中,另一个不同接受服务,也就是当内核位于 ISR 时如果中断出现,在为新的 IRQ 开始 ISR 前它将一直执行直到ISR 结束,这将引起硬件中断和 ISR 开始之间的延迟,拖延和响应时间中断响应。
sum(dIST)=所有的出现在 ISR 和 IST ,开始的优先级 ISTS 和线程上下文转换时间总和。
sum(dISR)=在中断(?) ISR 和它的 IST 之间运行的其它 ISRS 持续时间总和。
最简单的例子——具有一个关键级 ISR 和一个关键级线程(无其它0优先级的线程)的嵌入式系统——没有其它的 ISTS 能够在ISR 和 IST 之间中断,然而在关键级的 ISR 和它相关的 IST 开始间其它的 ISRS 能被处理。
因为 ISRS 一旦能够获得,即可被处理,很容易想象成病态情况,涉及产生一个持续的 ISRS 流,从而产生不确定的推迟。 IST 的开始不可能出现,因为 OEM对系统中的中断完成控制。因为 OEM (原始设备制造商)为特定操作系统设计传统 Windows CE 版本。 OCM 利用目标操作环境限制使系统设计最佳化。
Windows CE的多线程和优先级,Windows CE支持个人线程优先级;
Windows CE支持优先权继承程序,以便调整优衔级别以修改优先权颠倒;
Windows CE支持一个可预测的线程同步机理,包括等待对象,如互斥体关键部分,命名或未命名的事件对象,它基于线程优先权排序。
Windows CE也支持与系统控制器的联连:
OEM能够控制类由系统支持的中断处理,即通过执行ISRS和ISTS,它可弥补中断处理软件;
OEM完成在所有映射到中断ID号的IRQS,并且它与中断处理软件相联系(ISR和IST),描绘工具和应用软件可以利用记录处理中断最大时间。
中断响应是可预测和有限制的,当优先权取消时,上限即为花费在内核中时间总量,匹配转化时间,和由OEM执行的ISRS和ISTS申请处理时间。
每个系统调用的时间是可预测的,并与系统对象数目无关,
利用 instrumentted kernel系统调用时间能够保证Windows CE内核设计保证中断和它们相关线