ISTS 不能被其它的线程占用,这些线程持续执行直到它们截止或放弃。 Windows CE 不能支持群体中断,这就意味着当以前一个中断处理中,另一个不同接受服务,也就是当内核位于 ISR 时如果中断出现,在为新的 IRQ 开始 ISR 前它将一直执行直到ISR 结束,这将引起硬件中断和 ISR 开始之间的延迟,拖延和响应时间中断响应。
下文中,Intervupt Latency 词组主要指的是较件中断处理响应,也即是从处部中断到达处理器到中断开始处理间的时间。Windows CE的
中断响应时间是针对锁存在内存上的线程 (当内存响应不存在时)。这使得计算最差事件响应成为可能——中断服务程序(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 被设成最高级,这有样 ISRS dISR-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 (原始设备制造商)为特定操作系统设计传统
Windows CE 版本。 OCM 利用目标操作环境限制使系统设计最佳化。 为减少响应时间,OEM 控制 ISR 和IST 处理时间中断优先级线程优先级。公式中的 value1 和 walue2 代表,Windows CE 内核中处理时间,这是 OEM 不能控制的目前的在分时,研究工作涉及这些确认值。
两种不同途径被用来确保Windows CE操作: * 由Windows CE开发组进行内部的检查或分析内核代码, * OEM和ISV(独立软件销售商)利用一些将在未来的Windows CE版本嵌入式工具包(for VCFT)提供工具来确保特定配置。 Windows CE关于VC++的嵌入工具包包括以下工具: * (一个对于分时研究的内核的工具版本和Intrtinrt.ext应用软件来观察,中断过程的最大、最小、平均时间。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35629-7.html
真真假假都不晓得
全面备战搞点气势出来