新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > MS Windows CE的实时系统

MS Windows CE的实时系统

作者:时间:2012-05-02来源:网络收藏

例如,如果一个线程在最高优先权运行试图莸取由低级优先权占有的互斥体,低级优先权的线程变成高级优先权,并且运行直到它释放互斥体。优先权倒置适用于的所有线程。例如,甚至在优先级别1运行的内核线程能转成级别0,如果优先级0线程运行内存分页代码,将引起块失误。

本文引用地址:http://www.eepw.com.cn/article/149161.htm

基于优先级的多任务设计,保证运行在最低级的线程在一个预所知时间段执行。本论文在后面讨论设定响应,对于指定的平台和公式,并由其它的平台获取数字。在DAK和SDK的工具,显示了线程状态和优先级别,并描绘指定操作轮廓。

线程同步

必须保证进程和线程同步,例如,如果应用的一部分在另一部分获得最多当前数据前即完成,此应用的管理进程可能不稳定,同步将确保在应用线程间交换正确。

如同其它的操作系统一样,为线程同步提供了一个丰富的“等待对象”,这包括关键部门、事件、互斥体,些等待对象,允许一个线程减缓它的运行并且等待直到指定事件发生。

将互斥体、关键部分、事件请求按“先入先出,优先级(FIFO)”顺序排列:不同的先入先出顺序序列定义成八个不同的优先级,在给定的优称级的线程请求,将被放在优先级列表末尾,当优先级倒置出现时,调度程序调整这些序列。

除了等待对象,Windows支持标准的Win32时间API函数,这些来自内核的应用,软件中断将获得时间间隔,它被用来管理实时应用。通过调用GetTickCont函数,它能够返回几毫秒,线程能够使用系统间隔时间。关于更详细的分时信息,WindowsCE内核也支持Win32API函数QueryPerformanreCounter和QueryPerFormanteFrequency。OEM必须为这些调用提供硬件和软件支持,它提供一个较高的时间分辨力和OAL界面其它方面。

其它方面考虑

WindowsCE提供了一个重要的存储系统,例如,当目前某些运行WindowsCE的平台提供4MB的物理内存,WindowsCE支持一个重要的2GB的地址空间,每个进程联接在它自己的32MB物理空间上,当它需要产生内存分页中断(这可能影响线程执行时间),物理内存进行线程代码或数据内存分页。

内存分页输入输出,将比实时进程优先级低。在实时进程中内存分页仍可自由出现,但这要确保后台的实际内存管理赢得实时系统优先权。

实时线程应该锁存在内存中,以防止这些无关紧要的内存分页阻碍其运行,它们可能会占用实际内存管理系统。

WindowsCE允许映射,这将阴止多个进程共享同一物理内存,结果将会导致协同进程间或驱动器与映射快速的数据传送,内存映射能够戏剧性的增强实时操作。

中断处理:IRQSISRS和ISTS

实时应用被设立在指定的时间间隔内,对外部事件做出反应,实时应用使用中断做为一种确保外部事件由操作系统获知的方式。在Windows中,内核和OEM适应层(OAL)被设定成使系统其它部分的中断和调度最优化。WindowsCE平衡操作,并通过把中断过程分成两部分而使执行更加容易:它分为中断服务程序(ISR)和中断服务线程(IST)两部分。

每条硬件中断申请线(IRQ),与一个ISR相连。当中断成立和中断出现时,内核为此调用寄存的ISR,ISR为中断处理的内核模式部分尽可能短的保存。它首先将内核放在适合的IST上。

ISR执行它的最小处理并返回一个ID号到内核,内核检查返回的中断ID号,并设置相关事件,中断服务线程等待事件。当内核设置事件时,IST停止等待并开始执行,附加的中断进程,中断处理大部分实际上出现在IST中,两个最高的线程优先权(级别0和1),通常指定为ISTS,保证这些线程运行得足够快。

正如前面所说,处在最高级的ISTS不能被其它的线程占用,这些线程持续执行直到它们截止或放弃。

WindowsCE不能支持群体中断,这就意味着当以前一个中断处理中,另一个不同接受服务,也就是当内核位于ISR时如果中断出现,在为新的IRQ开始ISR前它将一直执行直到ISR结束,这将引起硬件中断和ISR开始之间的延迟,拖延和响应时间中断响应。

中断响应

本论文中,IntervuptLatency词组主要指的是较件中断,处理响应,也即是从处部中断到达处理器到中断开始处理间的时间。

WindowsCE中断响应时间是针对锁存在内存上的线程(当内存响应不存在时)。这使得计算最差事件响应成为可能——中断服务程序(ISR)开始和中断服务线程(IST)开始D的总时间,直到中断处理的总时间能够通ISR和IST中所需时间计算决定。

ISR响应通用公式定义如下:

ISR开始时间=value1+dISR_Current+sum(dISR_Higher)

value1=由内核处理过程获得响应值

dISR_Current=中断到达时程序中ISR持续时间。这个值范围由0到系统中最长的ISR持续时间

sum(dISR_Higher)=所有在ISR开始前的较高级ISRS持续时间总和,即在时间vahe1+dISR-cumeneu间到达的中断

例如,考虑一个拥有关键优先权ISR的嵌入式系统,因为ISR被设成最高级,这有样ISRSdISR-Higher值为0。当没有其它ISRS最低响应,在程序中,即为value1最低响应即为value1加系统中最长ISR周期,当中断到达时,正是系统中最长的ISR开始执行。

IST响应周期定义如下:

IST开始时间=value2+sum(dIST)+sum(dISR)

value2=由内核处理的响应值

sum(dIST)=所有的出现在ISR和IST,开始的优先级ISTS和线程上下文转换时间总和。

sum(dISR)=在中断(?)ISR和它的IST之间运行的其它ISRS持续时间总和。

最简单的例子——具有一个关键级ISR和一个关键级线程(无其它0优先级的线程)的嵌入式系统——没有其它的ISTS能够在ISR和IST之间中断,然而在关键级的ISR和它相关的IST开始间其它的ISRS能被处理。

因为ISRS一旦能够获得,即可被处理,很容易想象成病态情况,涉及产生一个持续的ISRS流,从而产生不确定的推迟。IST的开始不可能出现,因为OEM对系统中的中断完成控制。因为OEM(原始设备制造商)为特定操作系统设计传统WindowsCE版本。OCM利用目标操作环境限制使系统设计最佳化。

为减少响应时间,OEM控制ISR和IST处理时间中断优先级线程优先级。公式中的value1和walue2代表,WindowsCE内核中处理时间,这是OEM不能控制的目前的在分时,研究工作涉及这些确认值。



关键词: 系统 实时 CE Windows MS

评论


相关推荐

技术专区

关闭