摘要 分散控制系统中现场控制站的软件设计是基于实时操作系统的。本文从微内核、任务调度、中断处理和上下文切换四个方面分析了QNX的实时性,并给出了相关的技术指标,说明了QNX为现场控制站软件的开发提供了良好的操作系统平台。
关键词 QNX 嵌入式 实时 操作系统
0 引言
实时操作系统主要用于计算机实时控制。在分散控制系统中,现场控制站担负着系统的数据采集、实时运算和网络通信等功能,其软件的开发是基于实时操作系统平台的,因此,选择一个良好的操作系统平台对于分散控制系统(DCS)的开发具有至关重要的意义。
QNX作为一种分布式嵌入式实时操作系统,在国产DCS开发中受到广泛青睐,山东鲁能控制公司的LN2000、北京和利时自动化工程公司的Hollysys等都使用了QNX操作系统,并取得了良好的应用效果。
1 实时操作系统
1.1 概念
有关实时系统的定义在C.M.Krishna著《实时系统》[1]一书中给出了一个广义的定义: 能够及时地对外部事件响应的计算机系统称为实时系统。这个定义强调了系统对于外部事件的响应能力是判定实时系统的关键,如果再加上系统对指定任务执行的能力,就可以比较全面地考察一个系统的实时性。所以可以这样认为:实时性是指系统在限定的时间内完成所给定的功能并对外部异步事件做出响应的能力。
实时系统中有不同的任务,在实时操作系统中,不同的任务有不同的驱动方式。实时任务总是由于某事件的发生或条件满足而激活,所以实时任务又可分为时间驱动和事件驱动。
时间驱动有两种:绝对时间驱动和相对时间驱动。绝对时间驱动是指在某个指定时刻执行的任务,可以使用计算机内部时钟,有时需要进行卫星对时或系统间对时。相对时间驱动是指周期性执行的任务。一般可用计算机内部时钟或软时钟计时触发。
事件驱动有两种:内部事件和外部事件。内部事件驱动是指某一程序运行的结果导致另一任务的启动,一般属于同步任务范畴。外部事件驱动是指工业现场状态发生变化或出现异常,立即请求 CPU处理,一般属于异步事件,是最典型的实时任务,也是衡量系统实时性的最重要的指标。
实时操作系统中也包含一些无实时性要求的任务,如系统初始化工作,只是在系统启动时执行一次即可。
图1 任务及其驱动方式
实时操作系统除具有通用操作系统的特性和功能外,其主要特点就是实时性强。系统的实时性除了由硬件质量作为基本保证外,主要由实时操作系统内部的事件驱动方式和任务调度方式来决定。衡量实时操作系统实时性能强弱的指标是系统执行完规定的功能和响应外部异步事件所需时间的长短。所以,对于QNX系统的实时性分析,主要从系统的两个方面进行:中断处理方式(即外部事件驱动方式)和任务调度方式。对于时间驱动方式和内部时事件驱动方式作简要介绍。
1.2 QNX简介
在智能化设备、仪器仪表的应用场合,出于对产品体积、成本等因素的考虑,往往要求将计算机控制部分安装于设备内部且占用空间尽可能的小。在这种情况下,处理器一般没有多少可用的内存,更没有可用的外存,而操作系统就装在这有限的内存中(一般在 ROM中),这种系统人们称之为嵌入式系统。嵌入式系统是智能化设备、仪器仪表的灵魂。QNX是由加拿大QSSL公司开发的一种分布式嵌入式实时操作系统,能够广泛应用于嵌入式系统领域,实现实时控制。
实时操作系统本身的设计水平直接影响到系统的实时性能。因此,操作系统必须是高效率的,系统本身的开销应尽可能小,进程调度、进程间通信、中断处理等系统公用程序应精练而有效,它们造成的延迟应尽可能地短,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。
2 中断处理
中断是计算机硬件与操作系统之间的纽带,中断处理是实时操作系统的基础。中断控制器将与计算机有关的外部事件信号发送给CPU,使CPU正在执行的程序中断而优先响应外部事件的请求,即实时请求。系统实时性的强弱与中断响应时间密切相关。
2.1优先级抢占
是否按优先级抢占CPU是衡量操作系统实时性的重要特征。所谓优先级抢占CPU是指当中断发生时,若中断优先级是当前最高级,才能立即得到响应,这时的响应时间即为最小响应时间,若中断请求发生时还有更高优先级中断处理正在执行,甚至还有较高级中断请求在排队等待处理,则该中断请求得不到及时响应。QNX系统允许为硬件中断分配优先级,因此也允许更高优先级的中断抢占CPU,即当较低级的中断处理程序正在执行时,更高级的中断发出中断请求,CPU将转向更高级的中断处理程序,直至高级中断的处理执行完,再返回来执行当前的程序。在分析低优先级中断处理所需的处理时间时,还应将所有较高级中断处理所用的时间考虑进去。
2.2 时间延迟
对于中断处理所消耗的时间即时间延迟是衡量系统实时性的重要指标,时间延迟指从一个事件发生到程序中负责响应该事件的代码实际开始运行所需要的时间。在QNX系统中中断处理中时间延迟主要包括中断延迟和调度延迟。这两种延迟与QNX的中断处理方式有关系统,在QNX系统中依据返回情况,可将中断处理方式分为两类,一类是单纯的返回,如图2,另一类是在返回的同时触发一个代理,如图3。
图2 单纯返回型中断处理方式
图3 触发代理型中断处理方式
图中Til为中断延迟,Tint为中断处理时间,Tiret 为中断结束时间,Tsl为调度延迟。
中断延迟时间Til是指系统确认中断开始直到执行中断服务程序的第一条指令为止整个处理过程所需要的时间。实时操作系统的中断延迟时间由下列三个因素决定:
1) 处理器硬件电路的延迟时间,通常这个时间可以忽略。
2) 实时操作系统处理中断并将控制权转移给相关处理程序所需要的时间。
3) 实时操作系统的中断禁止时间。当系统运行在核心态或执行某些系统调用的时候,是不会因为外部中断的到来而中断执行的。只有当系统重新回到用户态时才响应外部中断请求,这一过程所需的最大时间就是中断禁止时间。QNX对这些特别关键的代码也需要对中断实行暂时的屏蔽,这一屏蔽的时间延时很小,可以忽略。
调度延迟Ts1是从中断处理程序结束时起到一个驱动程序进程的第一条指令开始运行之间这一段时间。大多数中断处理结束时并不触发代理。在很多情况下,仅用中断处理程序就足以解决所有问题,所以仅在出现最大事件时才需要触发有关代理来调度更高一级的驱动程序进程。
QNX系统的这两种延迟指标见下表1:
表1 QNX的延迟指标
中断延迟
|
调度延迟
|
时间
|
处理器
|
时间
|
处理器
|
3.3微秒
|
166MHz Pentium
|
4.7微秒
|
166MHz Pentium
|
4.4微秒
|
100MHz Pentium
|
6.7微秒
|
100MHz Pentium
|
5.6微秒
|
100MHz 486DX
|
11.1微秒
|
100MHz 486DX
|
22.5微秒
|
33MHz 386EX
|
74.2微秒
|
33MHz 386EX
|
实时系统应尽量减少中断延迟响应,其主要方法是可提高CPU速率,合理安排外部事件的中断优先级,优化各级中断处理程序,尤其是优先级高的中断处理程序。
3 任务调度
实时操作系统都是多任务系统。中断处理程序虽然能及时把现场信息取回来,但对信息的分析处理、依据处理结果所采取的对现场的应答与控制工作,一般由中断任务来完成。一个外部事件的发生往往会引起一系列同步任务的执行,系统中还有许多由时间驱动的任务。这就需要进行任务调度,其作用是决定如何把CPU资源分配给执行中的各个任务。每个就绪的进程都在某个队列中排队,等待使用CPU。用什么样的策略决定哪个就绪的进程使用CPU,以及正使用CPU的进程什么情况下放弃使用CPU,是任务调度的关键问题。任务调度方式由任务调度算法实现,是决定系统实时性能的重要环节。
这里需要解释两个概念的关系:任务是指一个程序分段,这个分段被操作系统当作一个基本单元来调度,任务是系统运行前已经设计好的。进程是指任务在作业环境中的一次运行过程。可以把任务和进程同等看待,认为进程是一个动态过程,即执行任务的动态过程。在本文中对这两个概念不作严格的区分。
在 UNIX分时操作系统中,每个进程都有一个优先级,优先级高的进程先使用CPU,调度程序用一个算法来计算正在执行的进程的优先级,对于使用过大量CPU时间的进程则降低它们的优先级,对于等待时间长的进程则升高它们的优先级。进程自己只能通过系统调用改变自己的优先级,而没有其他控制进程先后执行的手段。因此,分时系统不能保证在限定的时间完成指定的功能。
在QNX实时操作系统中,提供了控制进程执行的手段,使用户能够设定和改变进程的优先级,并让用户能够选择进程调度算法。进程的优先级大小为1(最低)到31(最高),调度程序在选择下一个运行进程时,将检查每个处于就绪状态的进程的优先级,具有高优先级的进程将首先被执行。
QNX基本的任务调度算法使用的是按优先级抢占的调度方法。这种方法保证在任何时刻都是优先级最高的任务占用CPU时间。优先级最高的任务可以中断当前运行的任务 – 哪怕它是中断任务 – 而抢占CPU,这种方法用于工业实时性要求高的场合。而不是采用优先级加轮询的调度方法和非抢占式优先级调度的方法。
在基本调度算法的基础上,对于当两个或更多个具有同样优先级的进程同时处于就绪态并且都是当前就绪队伍中优先级最高的任务时,QNX提供了三种调度方法来解决这个问题。
1) 先入先出调度法:先进入任务队列的进程被选择运行,直到它自动放弃运行或者被一个级别更高的进程打断运行。
2) 循环式调度法:先进入任务队列的进程被选择运行,直到它自动放弃运行或者被一个级别更高的进程打断运行或者它用完了自己的时间片。一个时间片是50ms,是系统分配给每个进程用于运行的时间单位。
3) 适应式调度法:在这种调度法中,一个进程的优先级会在运行中发生变化:
4) 如果该进程用完了自己的时间片仍未被阻塞,进程的优先级将被减1,称为优先级衰退,系统中一个进程只能降低一次优先级。如果该进程被阻塞,则将立即恢复为原来的优先级。
QNX系统提供的适应式调度法为计算密集型的进程提供对CPU更有效的利用,同时还保持了对其他进程的快速响应能力。不过在系统设计中应注意同优先级的任务数量不宜太多,因为这样终归会影响系统的实时响应时间。
4 上下文切换
作为实时性的两个主要指标的上下文切换和中断延时,在QNX中操作系统中,其时间指标都在微秒一级。如:
处理器
|
速度(MHz)
|
上下文切换(微妙)
|
7400G4 PowerPC
|
460
|
0.6
|
R527X MIPS
|
166
|
2.3
|
SH-4
|
200
|
1.9
|
SA-1110 String ARM
|
207
|
1.8
|
在QNX系统中,时间驱动方式是由计时器实现,计时器可以实现绝对时间和相对时间驱动。系统的延时可以实现毫秒级的运行暂停功能。计时器的最小走时间隔为500微秒。
5 结论
QNX操作系统对实时应用是理想的,它提供一个实时系统所需要的一切基本要素:多任务、由优先级驱动的急者优先式调度方式、适应式调度法和快速上下文切换。在保持全部真正微内核设计的固有优点的同时,QNX比传统内核结构更迅速发布系统服务。因此,开发者使用QNX可以开发出优于昂贵的高档系统的性能的低成本的产品。
参考文献
1 C.M.Krishna, Kang G.Shin . Real-time System, Tsinghua University Press ,2001.
2 侯业勤,张菁,分布式嵌入式操作系统QNX,北京宇航出版社,1999
3 蔡德聪等,工业控制计算机实时操作系统,清华大学出版社,1999
免责声明/版权申明 Passiontech
所有文章为网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果由您自己承担!
本站仅仅提供一个观摩学习的环境,将不对任何资源负法律责任。所有资源请在下载后24小时内删除。
若无意中侵犯到您的版权利益,请来信联系我们,我们会在收到信息三天内给予处理!