使用RTX增加Windows XP/2000/XP Embedded系统的硬实时特性1

内容简介

  

   摘要

   简介

   Windows XP平台和实时系统

   RTX结构

   深入RTX

   实时硬件抽象层

   Windows XP停止保护

   扩展HAL

   RTX和中断延迟

   RTX中断延迟缩减技术

   RTX对象

   RTSS调度器

   服务请求中断

   Win32RTSSIPC

   RTSS代理模型

   控制Windows XP I/O管理器

   快速计时器支持

   动态链接库

   RTSS中的结构异常处理

   性能

   使用Visual Studio创建RTX应用程序

   性能工具

   目标设计者SLD

   未来方向

   结论

   获取渠道

   参考

  

  

  

  摘要

  

  由于很多商业和技术原因,Microsoft® Windows NT®Microsoft Windows 2000 Windows XPWindows XP Embedded操作系统越来越多被考虑作为实时系统平台。为了满足硬实时系统严格的响应时间的要求,增加Windows XP系统的实时能力非常必要。这篇文章介绍了美国Ardence公司的RTX产品,其在Windows平台上提供了一个实时子系统。RTX实现了确定性的实时线程调度、实时环境和与原始Windows环境之间的进程间通讯机制以及其它只在特定的实时操作系统中才有的对Windows系统的扩展特性。这篇文章描述了RTX怎样提供这些特性和目前的实时性能,并指出了未来性能增强的方向。

  

  简介

  

  微软公司的Windows XP操作系统的大众接受程度和市场占有率日益扩大。这主要是基于以下几点原因:

  • Windows XP平台更强的性能和更低的价格;

  • 该平台上可运行多种应用程序;

  • 该平台支持多种开发工具;

  • 丰富的Win32应用程序接口;

  • 大量的熟悉本系统的开发支持人员和最终用户。

  鉴于多系统的计算环境的复杂度和所需要的额外维护成本,更多的公司倾向于将Windows XP应用到设备的所有级别上。将其作为网络服务器或者桌面系统是很容易理解的,因为Windows XP就是为这些环境而设计的。但是,仍然有很多其他环境有使用Windows XP的要求,譬如制造车间,医疗设备,仿真器械,测试设备和通信器材。这些环境的共同特点就是它们都要求系统拥有硬实时特性。

  Windows XP可以满足这个需要吗?答案是否定的。但是,通过附加软件就可以在Windows XP上实现所需要的硬实时特性。否则的话,开发者必须增加一台实时计算机,并承担额外的费用和复杂度。下文讨论了Ardence公司的硬实时产品RTX,其中包括RTSS实时子系统(Real-Time Sub-System),它是专门为PC架构(Intel Pentium系列及其相应的操作系统)的Windows平台设计的。

  此前的一篇文章[Carpenter 97]讨论了开发过程中的一些成果,这篇文章提供了对实现的更详细的介绍,包括性能参数,功能的提高以及发展前景的概述。

  

  Windows XP平台和实时系统

  

  什么样的系统可以被称为实时?

  实时系统的特点在于:一个正确的运行不仅取决于结果的准确,更取决于实现的时间。需要注意的是,“实时”并不意味着“快”,它指的是系统的时间响应特性。换句话说,实时性的衡量标准不是系统的平均响应时间而是最坏情况下的响应时间。实时系统有时被进一步划分为硬实时系统和软实时系统。硬实时系统对响应时间的要求是严格的,绝对的;而软实时系统允许有一些小的误差。某些观点认为“软实时”的说法是自相矛盾的,在下文中凡涉及到“实时”都指的是硬实时系统。

  一个硬实时系统的例子是压盖机给在传送带上传送的瓶子加盖。对于系统,仅仅准确定位压盖机是不够的,如果瓶盖已经移走而压盖机才刚刚到位那么所有的精确定位都是徒劳的。

  除了确定性,实时系统通常还有一些其他要求:

  • 一个具有很多优先级的多线程优先级调度器(如典型的64-256)

  • 可预测的线程同步机制;

  • 具有优先级继承

  • 快速的时钟和定时器

  

  为什么Windows XP平台不是实时的?

  Windows XP是一个通用操作系统平台,同时适合于桌面交互系统和网络服务器[Solomon 98]Windows XP(同时适用于Windows XP Embedded)在实时应用方面的缺点已经被很系统地研究过了:

  • 线程优先级太少;

  • 隐含的不确定的线程调度机制;

  • 优先级倒置,尤其体现在中断处理中;

  尽管更快的处理器显著的增加了处理能力和平均响应时间,甚至使某些人以为实现系统的实时性变为可能,但是非确定性系统是不能变成确定系统的,最坏响应时间的提高也不是总能被保证的。所以,新的硬件平台并不能改变Windows XP的实时特性。

  某些开发人员使用了两台计算机----一台运行Windows XP ,另一台运行实时系统。但是这增加了大量的硬件成本并使系统的开发和集成变得复杂,不是一种通用的、高效率的解决方案。

  

  为什么要对Windows XP 平台进行实时扩展?

  RTX的设计逻辑基于以下几个因素。通用的Windows XP操作系统是面向大众市场的,不适合实时性这样非普遍的需求。尽管由微软赞助的关于Windows XP实时性的研究已经有了一些进展[Sommer 96]----尤其当应用程序事先声明其资源需要的时候[Sommer 97][Sommer & Potter 96] ----但对于Windows XP这种面向广阔市场的操作系统,吸收实时性系统的复杂性以完成其功能,其可行性是值得怀疑的[Microsoft 95]。这意味着使Windows XP具有实时性的最好方法是通过对原产品的扩展或者由插件实现[Jones 98]

  同时,Windows XP平台提供了丰富的和复杂的设备驱动模型,定制的硬件抽象层(hardware abstraction layer HAL)和模型为开发者提供了对系统行为的灵活掌控能力和面对技术挑战的创造性机会。这样,实时功能可以按照微软Windows XP驱动开发工具(Driver Development KitDDK)HAL模型来实现[Baker 97]

  最后,对于非微软员工的Windows XP扩展内核编写人员,Windows XP的内核就如同硅制芯片一样,其接口和行为都是固定的。无需抱怨,利用现有的条件就可以设计出紧凑的实时性扩展,使其易于在不同的Windows版本之间进行移植。图1说明了RTX如何实现可移植性的目标。

  

  那么,你需要一个硬实时的Windows XP环境吗?

  为何将Windows XP扩展为实时系统?

  既然刚才提到的微软Windows XP平台的许多缺点都是由于其线程模型和线程调度,那么实时扩展拥有自己的线程和调度也就十分必要了。同样,Windows XP平台的同步对象,例如事件,信号量,互斥体等缺乏必要的实时机制(尤其它们既无法防止线程侵占,又无法使线程按优先级顺序等待对象响应)。由于这些原因,实时扩展应该实现自己的同步对象[Bollella 95]

  如果按照Windows XP的环境逻辑实现一个实时子系统,这个实时环境应该能够:

  • 无论在任何时间其优先级都应该高于Windows XP,至少在Windows XP中断处理程序代码的临界区以外。

  • 执行实时任务时,延迟Windows XP的中断和错误。

  • 实行实时任务时,要能够处理实时中断。

  抢占Windows XP和其驱动的高级别中断请求(Interrupt Request NumberIRQ)让给没有时间约束的实时任务是一种危险的想法。但是这些事件是常见的,并且Windows XP被设计用来处理它们:高优先级中断请求(high-interrupt request levelIRQL)侵占低级的;DMA外设的总线控制和系统管理模式下的处理可以延迟最高级别的中断请求;PCI设备可以拖延CPUI/O空间的访问。所以,从Windows XP的观点来看,RTSS窃取Windows XP的执行周期就等同于获得中断并返回。这样的时间能被Windows XP很好的处理,而不必考虑其持续时间。

  实时子系统的功能需要包括与Win32子系统的进程间通讯(interprocess communicationIPC),访问Windows XP内核功能(中断管理,I/O端口,关机/崩溃处理器),最重要的是与Win32在源代码级别上兼容。

  

  RTX结构

  

  RTX被实现为一套库的集合(动态库与静态库)RTSS作为Windows XP的内核设备驱动与HAL扩展(见图1)[Carpenter 97]。子系统实现前面提到的实时对象和调度器。通过一套被称作RtWinAPI的实时API(RtWinAPI 同时也被Windows CE Phar Lap ETS支持)这套库提供了对这些对象的访问方法。注意,RtWinAPI可以被标准Win32环境和RTSS环境调用。虽然在Win32环境中使用RtWinAPI不能提供在RTSS下的确定性,但是却可以允许应用程序在更加友好的Win32编程环境中开发而不是DDK环境[Anschuetz 98]。将Win32程序转化为RTX程序只需要重新链接一套不同的库而已。Windows XP服务控制管理器直接将RTX进程和动态链接库(DLL)的可执行映像装入内核的不分页内存中。

  

  

  

  图1 RTX架构

  

  深入RTX

  

  实时硬件抽象层(HAL)

  HALWindows XP系统提供的可被用来进行修改和扩展的资源的一部分。RTX修改HAL有以下3个目的:

  • Windows XPRTX线程之间增加独立的中断间隔;

  • 实现高速时钟和定时器;

  • 实现关闭处理程序。

  中断隔离意味着Windows XP线程和Windows XP管理的设备不可能中断RTSS,同时Windows XP线程也不能屏蔽RTSS管理的设备。HAL通过控制处理器级的中断屏蔽满足这些条件。当运行RTSS线程时,所有Windows XP控制的中断都被屏蔽掉。当Windows XP线程请求设置中断屏蔽时,作为实际管理中断屏蔽的软件,HAL确保没有任何RTSS中断被屏蔽。

  Windows XP提供的计时器的最小计时单位为1000微秒(1毫秒)RT-HAL将其降到了100纳秒并且提供了同步(与计时器)的时钟。

  

  Windows XP停止保护

  除了中断管理和更快的定时器服务,实时HAL也提供了Windows XP关机管理。当Windows XP正常关机或者蓝屏崩溃时, RTSS应用程序可以被关联到Windows XP关机管理器。正常关机允许RTSS不受影响的继续运行,直到所有的RTSS关机处理器返回。但当出现蓝屏时,RTSS关机处理器就会受到限制,它将无法调用Windows XP的服务(例如分配新内存)。在实际中,这意味着当系统正常关机或者崩溃时,关机处理器清除一切并复位硬件,还可能向操作者发出警告,或者切换到备用状态。

  

  

  

  图2RTSS详细架构

  

  扩展HAL

  自从RTX4.3,一直采用扩展HAL的方式而不是替代。HAL扩展驱动在操作系统初始化时启动(SERVICE_SYSTEM_START),在内存中完成对HAL的动态检测、中断截取、定时器和关机的相关调用,并且重定向到RTX的相应位置。这种二进制钩子技术比起替代HAL来有许多优点:

  • RTX可以处理很广泛的OEM平台,这种重定向调用被限制在一种对于不同的OEM和服务商之间很少区别的调用上。

  • RTX兼容更大范围的Windows XP补丁包(Service PackSP),为了配合最新的HAL资源的补丁包而修改RTX是不必要的。

  • 因为磁盘上的HAL未被改动,所以安装变得更加容易,因此RTX也不受SP升级的影响。

  • 升级到更新的Windows版本变得容易,不费什么力气。

  当RTXWindows NT Windows 2000的后续SP上不经修改的成功安装,扩展HAL的好处也就无需证明了。

  

  RTX和中断延迟

  

  软件引起的中断

  当RTX高速时钟或者其他设备产生RTX中断时,就会发生从 Windows XPRTX的转换。所以,为达到RTXISR的确定性就必须减少Windows XP的中断延迟。让我们先来考察一下在没有RTX的情况下Windows XP平台的ISR延迟来源。

  最显著的延迟是由Windows XP内核和驱动引起的IRQ屏蔽,一般是通过Windows XPKeRaise/LowerIrql函数调用在几毫秒内实现的。Windows XP内核,HAL和某些特殊驱动也通过x86 STI/CLI指令集在几微秒内完成处理器级的中断屏蔽。

  Windows XP RTX中断处理自然会屏蔽中断,所以也肯定会增加ISR延迟。虽然在很多情况下Windows XP非常依赖于中断处理(例如软件异常,释放线程堆栈),但其中断顺序依然取决于最坏情况下的延时。

  

  硬件引起的中断

  和硬件有关的最明显的问题就是应用程序和操作系统对高速缓存的污染和转储清除。TLB的重填也属于这种情况。视频驱动的缓存占有量是极大的,当RTX中断启动时会造成竞争性的转储清除。当应用程序引起缓存污染时,ISR的直方图上将出现典型的双驼峰型。大部分采样靠近最好情况的区域,另外一大部分靠近存储清除的区域(见图3)

  电源管理,尤其是当其在移动设备上,当CPU经过较长时间的停滞而处于低耗电量状态时偶尔会产生较长的延迟。这种问题很容易被侦查到。一个典型的系统可以通过BIOS的设置来禁止这些特性。

  某些系统,尤其是笔记本,使用Pentium处理器的系统管理模式(System Management ModeSMM)BIOS固化软件中完成敲击键盘和其他处理。同时,在SMM下,处理器不会处理增加ISR延迟的中断。

  幸运的是,新一代系统平台通过高级设置与电源接口(Advanced Configuration and Power InterfaceACPI)Windows 2000转而使用操作系统而不是BIOS提供电源管理。因此,这些延迟的原因已经变得微不足道了。

  总线控制事件会引起CPU长时间的延迟。这种情况包括小型电脑系统接口(small computer system interface SCSI)设备的高性能DMA所引起的数微秒的CPU延迟和为响应CPU访问而加入等待周期的显卡。有时这些外设的行为可以被驱动控制,通过交替处理从而减少延迟。

  虽然没有任何系统能够确保应用程序不受这些硬件因素的干扰,但是RTX提供了诊断平台相关延迟的诊断工具,可以辨别那些行为错误的外设。留意这些因素并使用RTX工具来衡量开发平台对于一个系统的整体性能来说是非常重要的。

 

文章出处:http://www.diybl.com/course/4_webprogram/asp.net/netjs/2008331/107995.html

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值