过程实时性软件开发的要求_第1页
过程实时性软件开发的要求_第2页
过程实时性软件开发的要求_第3页
过程实时性软件开发的要求_第4页
过程实时性软件开发的要求_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、过程实时性软件开发的要求东北大学:谭树彬2008年5月18日11 Northeastern University May 28, 2008第二部分:章节名称第二部分:章节名称第二部分:章节名称21.1 什么是过程实时控制?Northeastern University Oct 18, 2005过程实时控制系统系统能在某个持续的过程(包括连续的或离散的)中,对应于系统的一组特定的输入数值,在它们尚未发生有意义的变换时,就作出恰当的反应。也就是说,过程实时控制系统是处理具有严格时间响应限制的联机外部过程的系统。由外部过程发来的中断信号引起系统动作,系统对此在规定的时间内作出反应。 31.2 过程实

2、时控制的特点Northeastern University Oct 18, 2005例如一个化工过程,将测得的某些过程参数输入系统,去激励系统产生相应的响应,后者又去控制执行机构动作,校正过程参数,达到控制与调整的目的,这就是实时操作。如果当响应出现的时候,输入已经远离初始对应的激励状态,以至该响应已失去对系统参数实施控制与调整的意义,那么就不是实时操作。响应对激励的时间之后,称为响应时间或反应时间,实时性的基本指标是响应时间。对于不同的过程,有不同的响应时间要求。对于有些慢变化过程,具有几分钟甚至更长的响应时间都可以认为是实时的。对于快速过程,其响应时间可能要求达毫秒、微秒、毫微秒级甚至更短

3、。因此,实时性不能单纯从绝对的时间响应长短来衡量,应当根据不同的对象,在相对意义上进行评价。41.2 过程实时控制的特点Northeastern University Oct 18, 2005计算机实时控制系统对控制对象物理量的采集,做出实时控制对策,并进行实时控制等过程,周而复始地重复进行,而且这些过程要及时地进行。也就是说,计算机的运算和操作速度必须与它所控制的对象实际运行过程相适应。为了达到这一要求,需要从硬件和软件两个方面来保证。在硬件方面要求配备实时时钟和中断优先级处理电路。在软件方面要配备实时操作系统,有实时操作调度管理程序和中断管理程序。调度管理程序按多道程序处理的概念对各任务进

4、行调度。例如,事故报警优先级高,但在处理事故信息时,打印占用时间较长,因此在优先调用事故报警程序过程中,当完成了事故音响、闪光和显示等的工作后转入事故打印时,调度程序将其分段断开去执行其他功能模块。对于实时性要求比较高的系统,除了采取上述措施以外,在应用软件方面也需要采取各种方法提高程序计算和执行的速度。例如,采用快速的算法,采用快速语言编程等。总之,要多方设法,保证其响应和处理速度。硬实时和软实时的区别就在于对外界的事件做出反应的时间。硬实时系统必须对实时事件及时地作出反应,绝对不能错过事件处理时限。软实时系统是指,如果在系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害。5实

5、时性快速性Northeastern University Oct 18, 20051、一个计算机控制系统处理速度的快慢,主要取决于硬件系统的设计,尤其是所采用的处理器的性能。而对一个硬件结构已确定的计算机系统,它的实时性能完全取决于控制过程的要求;2、实时系统总是和“多任务”联系在一起。如果一个计算机系统只运行一台任务,则它永远是在实时地执行着这个任务,这就没有讨论的必要了。6Northeastern University Oct 18, 2005LEVEL-IIPrinterHUBOPTHMI(PC)ProgrammingUnit (PC)CommonDiskL2OnlineL2Backup

6、Computer roomRouterUpper Level ComputerColorPrinterHUB控制系统配置图CPU-1HPU-1HPU-2CPU-2HPU-3HPU-4CPU-4HardcopyTrimmer P/PHUBOPTHMI(PC)PrinterEntry P/PPLMasterPLHandlingTCMMaster &HandlingH-04/R700 (PLC) systemHMI ServerTCM Electrical roomHMI :Human Machine InterfacePOC :Process Operation ConsoleMICA :Modu

7、lar Integrated Concept ArchitectureCPU :Central Processing UnitHPU :High speed Processing UnitD.NET :Device NetworkC.NET :Control Area NetworkMV CUB :Magnet Valve CubicleLV CUB :Level Converter CubicleIF CUB :Interface CubicleRY CUB :Relay CubicleOPT :Optical TransceiverIWS :Industrial Work StationD

8、.NETMainDeskMainDeskHMI(PC)HMI(PC)HMI(PC)PrinterHMI(PC)PrinterPOC(for MICA)HMI(PC)CRTOPTDataInterfaceDataInterfaceOPTPIO StationPIOD.NETC.NETT/M PanelWelderCPCPLGSYLoad CellIF PanelINVVVVFMHydraulicPush UPT/M PanelShape Meter(*4 TO HUB)Thickness GaugeCPCPLGSYBanding MachineWeigher(*3 TO HUB)*1*1(TCM

9、 P/P)INVVVVFMCCMPL YardTCM YardPL Electrical roomIF PanelLocal OperationStationLocal OperationStationFor Electrical EngineeringAGC/ASCPLC SYSTEM LAN(mSNetwork-100)ETHERNETETHERNET(HMI/MICA LAN)OPTHUBOPTOPTHMI(PC)PrinterCPU-3HPU-5HPU-6PLAux.(Instrument)DataInterfaceTCMAux.(Instrument)HMI(PC)HMI(PC)TC

10、M P/PD.NETMainDeskOPTHardcopyOPTHUBOPTPIO StationPIOD.NETC.NETRY Cub.MagnescaleLaser speeddetectorBender(*6 TO HUB)RY Cub.(*2 TO HUB)HUB*2HUB*3*4*6ETHERNET(CONTROL DATA LAN)3.5-2(Spare ports)(Spare ports)HMI(PC)(MICA)HUBHMI(PC)(MICA)Optical fiber cableShielded twist cable(D.NET, C.NET)OPTHMI(PC)HMI(

11、PC)HMI(PC)HMI(PC)HMI(PC)Coil Check Station(Coil Inspection)ARP Electrical roomOPTHUBARP PLC*5HMI(PC)(*5 TO HUB)(RIO)(RIO)(RIO)IF Panel(RIO)MCCDL Panel(RIO)(RIO)SolenoidValveMV Cub.LV Cub.Sensor(RIO)(RIO)SolenoidValveMV Cub.LV Cub.Sensor(RIO)(RIO)7典型计算机控制系统Northeastern University Oct 18, 20058典型计算机控制

12、系统Northeastern University Oct 18, 20059实时控制系统的软件结构Northeastern University Oct 18, 200510实时控制软件的4个特征Northeastern University Oct 18, 20051、 “时间”是最宝贵的资源 控制系统纳各个任务,包括输入、输出、控制计算和数据传输必须在确定时刻开始,在有效的截止时间内完成。推理和计算的正确不仅依赖于逻辑纳准确,而且依赖于结果产生的时间。2、系统的可靠性极为重要 因为在正常情况下,系统一经启动就要不停地连续工作;在异常情况下,要及时正确地处置错误故障,否则,因为控制的失误可

13、能导致经济和人身安全纳重大损失。11实时控制软件的4个特征(续)Northeastern University Oct 18, 20053、计算机的运行环境是实时控制系统的激活成分 因为控制系统纳持久性和实时性,程序要常驻内存,要集中全部系统资源,保证执行的响应时间,所以要解决无约束的软件设计方法与严格纳时间和可靠性限制之间的矛盾。4、程序必须具有及时处理随机事件纳能力 为了满足控制精度,任何时刻运行时间系统既不能丢失数据、信息,降低实时性,又要按照事件出现的顺序和轻重缓急,合理地排队处理,这就提出了任务纳占先机制和设置优先级问题。12实现实时控制的5种形式Northeastern Unive

14、rsity Oct 18, 20051、成套的计算机控制系统产品 目前世界上已出现了许多与硬件产品配套的,具有不同特点、适用于不同控制对象的软件产品,像HONEYWELL,ROSEMOUNT,FOXBORO,ANALOGIC,WDPF等DCS系统。 这类系统的软件是由计算机广家提供的,所谓软件设计工作只是编写用户程序,程序设计简单易学,系统运行可靠,维护量小,但由于软件环境是封闭的,不容易开发改善。13实现实时控制的5种形式(续)Northeastern University Oct 18, 20052、以实时操作系统为基础,由控制系统设计人员设计在操作系统上运行的实时应用软件 目前世界上已有

15、一大批像AMX,iRMX,RTOX,PSOS,Lynxos的实时操作系统。 这类系统要求用户自己编写应用程序,设计程序的流向。由于系统软件本身同时具有实时与多任务特性,用户可以直接面向控制对象编程,面众操作系统对应用程序进行实时调度相占先,循环处理,因此减少了应用软件开发的难度和周期。但要求程序员熟悉实时多任务编程技术,而且图形界面不太好。14实现实时控制的5种形式(续)Northeastern University Oct 18, 20053、集成的实时系统开发软件 例如Citect,Intouch,由软件制造商提供、是专门为实时控制服务的开发环境和运行环境。 它与采用实时操作系统的方式不同

16、,不需要用C、C+之类的通用语言逐行进行编程。系统本身已经构建了实现不同功能的软件包、程序模块和控键。用户只需要按规定方式,根据实际对象要求,调用相应模块即可构成应用程序。它与采用成套系统产品的方式也不同,是一种开放式的软件结构,软件功能不依赖于硬件产品,适用于不同的硬件配置和控制领域。这类产品程序编制工作量小,通用灵活,但一般价格都比较昂贵。15实现实时控制的5种形式(续)Northeastern University Oct 18, 20054、在通用操作系统(例如WINDOWS)环境下,实现程序的实时多任务特性 实际上是添加到C,PASCA,BASIC等基本库中的一些可调用函数,专门用来

17、实现创建多任务,分配优先级,进行任务间的通信等特殊功能。依靠它,用户可以免去设置中断,设计调度程序一系列数琐困难的编程工作,用普通编程技术碍到实时多任务应用程序,经济实用。16实现实时控制的5种形式(续)Northeastern University Oct 18, 20055、直接从系统的最底层采用高级语言或汇编语言编制实时应用程序 这种方法往往先把系统划分层次,明确目标、任务,对各个任务的子过程进行结构化编程,然后还要另外编写计时、中断、调度等控制程序。程序设计的难度和工作量很大,但整个程序对于设计人员来说是完全透明的,适应性强。17过程实时控制的基础Northeastern Univer

18、sity Oct 18, 20051、实时操作系统我们在日常工作学习环境中接触最多的是通用操作系统,通用操作系统是由分时操作系统发展而来,大部分都支持多用户和多进程,负责管理众多的进程并为它们分配系统资源。分时操作系统的基本设计原则是:尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。由此可以看出,分时操作系统注重平均表现性能,不注重个体表现性能。如对于整个系统来说,注重所有任务的平均响应时间而不关心单个任务的响应时间,对于某个单个任务来说,注重每次执行的平均响应时间而不关心某次特定执行的响应时间。通用操作系统中采用的很多策略和技巧都体现出了这种设计原则,

19、如虚存管理机制中由于采用了LRU等页替换算法,使得大部分的访存需求能够快速地通过物理内存完成,只有很小一部分的访存需求需要通过调页完成,但从总体上来看,平均访存时间与不采用虚存技术相比没有很大的提高,同时又获得了虚空间可以远大于物理内存容量等好处,因此虚存技术在通用操作系统中得到了十分广泛的应用。类似的例子还有很多,如Unix文件系统中文件存放位置的间接索引查询机制等,甚至硬件设计中的Cache技术以及CPU的动态分支预测技术等也都体现出了这种设计原则。由此可见,这种注重平均表现,即统计型表现特性的设计原则的影响是十分深远的。 18过程实时控制的基础Northeastern Universit

20、y Oct 18, 2005而对于实时操作系统,前面我们已经提到,它除了要满足应用的功能需求以外,更重要的是还要满足应用提出的实时性要求,而组成一个应用的众多实时任务对于实时性的要求是各不相同的,此外实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等,这就为系统实时性的保证带来了很大的困难。因此,实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配

21、资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求,也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况表现。举例来说,如果实时操作系统采用标准的虚存技术,则一个实时任务执行的最坏情况是每次访存都需要调页,如此累计起来的该任务在最坏情况下的运行时间是不可预测的,因此该任务的实时性无法得到保证。从而可以看出在通用操作系统中广泛采用的虚存技术在实时操作系统中不宜直接采用。 19过程实时控制的基础Northeastern University Oct 18, 20052、实时数据库

22、硬实时和软实时的区别就在于对外界的事件做出反应的时间。硬实时系统必须对实时事件及时地作出反应,绝对不能错过事件处理时限。软实时系统是指,如果在系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害。实时数据库是数据库系统发展的一个分支,它适用于处理不断更新的快速变化的数据及具有时间 限制的事务处理。实时数据库技术是实时系统和数据库技术相结合的产物,研究人员希望利用数据库 技术来解决实时系统中的数据管理问题,同时利用实时技术为实时数据库提供时间驱动调度和资源分 配算法。然而,实时数据库并非是两者在概念、结构和方法上的简单集成。需要针对不同的应用需求 和应用特点,对实时数据模型、实时事务

23、调度与资源分配策略、实时数据查询语言、实时数据通信等 大量问题作深入的理论研究。 20过程实时控制的基础Northeastern University Oct 18, 2005主要研究内容包括: 实时数据库模型实时事务调度:包括并发控制、冲突解决、死锁等内容容错性与错误恢复访问准入控制内存组织与管理I/O与磁盘调度主内存数据库系统不精确计算问题放松的可串行化问题实时SQL实时事务的可预测性21过程实时控制的基础Northeastern University Oct 18, 2005实时数据库RTDB(Real-Time Data Base)是数据和事务都有定时特性或显示的定时限制的数据库。RT

24、DB的本质特征就是定时限制,定时限制可以归纳为两类:一类是与事务相联的定时限制,典型的就是“截止时间”;另一类为与数据相联的“时间一致性”。时间一致性则是作为过去的限制的一个时间窗口,它是由于要求数据库中数据的状态与外部环境中对应实体的实际状态要随时一致,以及由事务存取的各数据状态在时间上要一致而引起的。实时数据库是一个新的数据库研究领域,它在概念、方法和技术上都与传统的数据库有很大的不同,其核心问题是事物处理既要确保数据的一致性,又要保证事物的正确性,而它们都与定时限制相关联。 22实时系统对局域网的需求Northeastern University Oct 18, 2005 通常用网络资源

25、的利用率来衡量一个网络的性能。实时系统和普通系统不同,在希望有高的利用率的同时,还希望有好的实时性。如果在利用率和实时性发生冲突的情况下,宁可牺牲一点利用率,也要保证实时性。在实时系统中,对信道的存取控制方法有自己的一些要求。如果把实时性的要求表示成时间约束条件,那么,局域网的存取控制应该满足下列时间约束: (1)每个节点每次取得通信的时间不能超过某一个时间限制值。因为信道是共享的,如果允许某些节点可以无限制地使用信道,或者占用信道的时间很长,那么,其他一些节点获得信道的时间必然减少,或者在需要获取信道的时候未能得到信道,这也必然影响这些节点的实时性。 23实时系统对局域网的需求Northea

26、stern University Oct 18, 2005 (2)每个节点必须在一个确定的时间周期里至少获取一次信道。这主要是针对实时控制系统而言的。在实时控制系统里,每个节点每时每刻都需要进行实时数据刷新,它必然要把一些被更新了的数据及时通报给其他需要这些数据的节点。如果不能保证每个节点在一个确定时间周期里把这些被更新的实时数据发送出来,那么,实时性也就得不到满足。 (3)优先级高的报文优先服务,这是实时系统的基本要求。 (4)必须保证报文的接收顺序和发送顺序一致。报文接收和发送的这种因果顺序关系,在实时控制系统里特别重要。设想在一个控制系统里,从中央控制室发出的指令顺序是:关闭1号控制开关

27、,再打开2号控制开关。如果通信不是因果顺序的,控制装置接收到顺序颠倒的指令,先打开2号控制开关,再关闭1号控制开关,就可能发生严重事故。248.1 线性离散系统的基本概念 LLLhREF测厚仪轧机轧件 测厚仪式AGC的不稳定现象258.1 线性离散系统的基本概念 268.1 线性离散系统的基本概念 1) 模拟信号(即连续信号) 时间上连续,幅值上也连续的信号。2) 离散的模拟信号 时间上离散,幅值上连续的信号。3) 数字信号 时间上离散,幅值上也是离散的信号;或者说,时间上离散,幅值是用一组数码表示的信号。4) 采样 将模拟信号按一定时间采样成离散的模拟信号。5) 量化 采用一组数码来逼近离散

28、模拟信号的幅值,将其转化成数字信号。278.1 线性离散系统的基本概念 (1)连续控制系统系统中均为模拟信号按包含的信号形式分类:连续控制系统和离散控制系统288.1 线性离散系统的基本概念 (2)离散控制系统系统中既含有连续信号 , , , 又含有离散模拟信号 , 的混合系统。采样控制系统是由连续的控制对象、离散的控制器、采样器和保持器等几个环节所组成。 29(1) 在连续系统中的一处或几处设置采样开关,对被控对象进行断续控制;(2) 通常采样周期远小于被控对象的时间常数;(3) 采样开关合上的时间远小于断开的时间; (4) 采样周期通常是相同的。8.1 线性离散系统的基本概念 7. 采样系

29、统的特点308.2 离散时间函数的数学表达式及采样定理 开关打开时,没有输出; 开关闭合时才有输出,其值等于采样时刻的模拟量 。 1. 离散时间函数的数学表达式(1)采样过程的特点318.2 离散时间函数的数学表达式及采样定理X(0), X(1), X(2), , X(n) 328.2 离散时间函数的数学表达式及采样定理每周期应该有多少采样点 ?最少2点:338.2 离散时间函数的数学表达式及采样定理348.2 离散时间函数的数学表达式及采样定理从功能和经济上选最佳采样周期358.2 离散时间函数的数学表达式及采样定理3. 采样定理 采样定理所要解决的问题是:采样周期选多大,才能将采样信号较少

30、失真地恢复为原来的连续信号。 香农(Shannon)采样定理 为了使信号得到很好的复现,采样频率应大于等于原始信号最大频率的二倍,即368.2 离散时间函数的数学表达式及采样定理4. 信号的复现(1)信号复现定义 把采样信号恢复为原来连续信号的过程通常称为信号的复现。 (2)信号复现方法加入理想滤波器 (理论上) 加入保持器 (实际上) 37零阶保持器的传递函数为:8.2 离散时间函数的数学表达式及采样定理(3)零阶保持器38过程实时控制的基础是什么?Northeastern University Oct 18, 200539过程实时控制驱动方式及控制结构Northeastern Univer

31、sity Oct 18, 2005 任务的功能及运行规律不同,驱动方式及其控制结构也不尽相同。具体可分为: (1 )时间驱动 (2)数据驱动 (3)中断驱动 (4)事件驱动 不同驱动方式对应不同的控制结构 40过程实时控制驱动方式及控制结构Northeastern University Oct 18, 2005 (1)时间驱动 时间驱动又可分为三种类型:延迟驱动、绝对时间驱动和定时驱动。1)延迟驱动 延迟驱动是使实时任务暂停一指定时间间隔(即延迟时间)后再驱动执行的一种驱动方式,适用于对周期时间要求不太严格的周期任务,执行周期等于实时任务的执行时间与延迟时间之和,由于实时任务执行时间的长短受系

32、统当时状态的制约,因此执行周期亦不固定。延迟驱动方式要求实时任务在本次执行结束时设置好下次执行的间隔时间,然后该任务便去睡眠(等待),等间隔时间到,即再次铰驱动执行。41过程实时控制的驱动方式及控制结构Northeastern University Oct 18, 2005 (2)绝对时间驱动 绝对时间是指北京时间。这种驱动方式非常类似我们日常生活中可定时起闹的闹钟,只要实时任务在本次执行时将下次驱动执行的时刻设置好,一旦定时钟计时到指定的时刻,该任务即被驱动,经任务调度后执行。按指定时到启动运行的任务可采用这种驱动方式。 42过程实时控制的基础是什么?Northeastern Univers

33、ity Oct 18, 2005 (3)定时驱动 定时驱动与上述延迟驱动类似,都属于相对时间驱动,但延迟驱动所设置的时间间隔不包括任务执行时间,而定时驱动所设置的时间间隔包括任务的执行时间。定时驱动方式适用于对周期时间要求严格的周期任务。 定时驱动的特点是:i. 驱动的时间间隔一次设定始终有效;ii. 两次驱动之间的时间间隔保持不变;iii. 周期任务的执行时间应远远小于周期时间。 43过程实时控制的基础是什么?Northeastern University Oct 18, 2005 (2)数据驱动 数据驱动系指实时任务以是否获得所需之数据作为运行条件可采取此驱动方式。 假设采样任务与数据处理

34、任务之间以数据通信方式进行数据交换,显然,当数据处理任务接收不到采样任务的数据时只好等待,一旦采样任务把实时数据采集进来,便可将数据发送给数据处理任务,并立即驱动数据处理任务运行来处理这些数据。44过程实时控制的基础是什么?Northeastern University Oct 18, 2005(3)中断驱动 生产过程中一些非常重要的开关量和模拟量点,往往利用中断来监视它们助工作状态,一旦发生误动作(开关量点)或越限(模拟量点),立即会通过中断反映到计算机中,CPU响应中断后,随即启动相应的中断处理任务处理所发生的上述紧急事件。如果这类监测点的工作状态正常,此类中断便不会发生,中断处理仟务也就

35、只好等待。45过程实时控制的基础是什么?Northeastern University Oct 18, 2005(4)事件驱动 “事件”系指一种情况或一种活动的发生或一种指定状态的变化。在操作系统中,一般特事件抽象成一个数据或一种数据结构。如果一个任务以事件出现作为运行条件,事件一旦产生,事件的发出者(操作系统或别的任务)就要将等待该事件的任务唤醒并投入运行,处理完事件所要求的操作后又继续等待下一个事件的出现。报警管理任务、数据库管理任务、操作控制台命令处理任务等可采用此驱动方式。 46过程实时控制的基础是什么?Northeastern University Oct 18, 2005 (5)

36、其他控制结构 前面曾提到具有运行截止期任务的情况,对于这类实时任务,它的驱动方式可能是这里介绍的某一种,也可能直接由其他任务驱动。不论哪一种驱动方式,在其运行的开始必须首先设置好运行的截止时间,然后再开始其正常处理,如果在截止期内能够处理完成,则阻塞等待下次的驱动。如果在截止期内不能完成处理,则被时钟管理程序发现后,会立即进入错误处理程序来处理发生的错误(如夭折该任务)。47一、什么是中断在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。这个过程就是中断。48中 断在通用操作系统中,大部

37、分外部中断都是开启的,中断处理一般由设备驱动程序来完成。由于通用操作系统中的用户进程一般都没有实时性要求,而中断处理程序直接跟硬件设备交互,可能有实时性要求,因此中断处理程序的优先级被设定为高于任何用户进程。 但对于实时操作系统采用上述的中断处理机制是不合适的。首先,外部中断是环境向实时操作系统进行的输入,它的频度是与环境变化的速率相关的,而与实时操作系统无关。如果外部中断产生的频度不可预测,则一个实时任务在运行时被中断处理程序阻塞的时间开销也是不可预测的,从而使任务的实时性得不到保证;如果外部中断产生的频度是可预测的,一旦某外部中断产生的频度超出其预测值(如硬件故障产生的虚假中断信号或预测值

38、本身有误)就可能会破坏整个系统的可预测性。其次,实时操作系统中的各用户进程一般都有实时性要求,因此中断处理程序优先级高于所有用户进程的优先级分配方式是不合适的。 一种较适合实时操作系统的中断处理方式为:除时钟中断外,屏蔽所有其它中断,中断处理程序变为周期性的轮询操作,这些操作由核心态的设备驱动程序或由用户态的设备支持库来完成。采用这种方式的主要好处是充分保证了系统的可预测性,主要缺点是对环境变化的响应可能不如上述中断处理方式快,另外轮询操作在一定程度上降低了CPU的有效利用率。另一种可行的方式是:对于采用轮询方式无法满足需求的外部事件,采用中断方式,其它时间仍然采用轮询方式。但此时中断处理程序

39、与所以其它任务一样拥有优先级,调度器根据优先级对处于就绪态的任务和中断处理程序统一进行处理器调度。这种方式使外部事件的响应速度加快,并避免了上述中断方式带来第二个问题,但第一个问题仍然存在。 此外为提高时钟中断响应时间的可预测性,实时操作系统应尽可能少地屏蔽中断。 49一、什么是中断50中断服务程序1中断服务程序 2非预料事件1CPU执行流程非预料事件 251二、中断源和中断优先权引起中断的因素很多,将发出中断申请的外设或内部原因,称为中断源;给每个中断源指定一个优先权,称为中断优先权;当多个中断源同时发出中断请求时,CPU按照中断优先权的高低顺序,依次响应。52三、中断服务程序 处理中断源,

40、完成其所要求功能的程序,称中断服务程序(中断例行程序、中断子程)。CPU执行流程中断服务程序1中断服务程序2非预料事件2非预料事件153 非预料事件是指事件发生的时间无法预知,即中断源何时产生中断不确定,是随机的。 但事件的性质及处理方法则是已知的, 确定的,即中断服务程序是事先编写好的,只是何时执行未知。 中断源产生中断的随机性,使中断服务程序的执行也具有随机性,即何时执行中断服务程序不是在程序中安排好的。54四、断点和中断现场断点:是指CPU执行的现行程序被中断时的下一条指令的地址, 又称断点地址。中断现场: 是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。

41、551000:150H 、 、 、 、MOV AX, 0ADD AX, DXMOV DI , AX、 PUSH AX 、 、 IRETCPU在执行此指令时,某中断源发申请中断;CPU在执行完该指令后,转去执行中断子程地址1000:150H为断点断点概念:56早期中断概念的引入, 是为解决CPU与外设间的速度匹配问题, 提高CPU 的工作效率。 中断源主要是由外部硬件产生。当今的中断技术, 不再限于外部硬件产生中断(称硬件中断或外中断 ), 还可由CPU内部产生 (如被零除操作), 或者由程序预先安排,即由指令调用中断服务程序。 (称软件中断或内中断)五、硬件中断和软件中断571000:150H

42、 、 、 、 、MOV AH, 01INT 21HCMP AL, 0Dh、 PUSH AX 、 、IRET用指令调用中断程序软件中断用指令调用中断程序58算法对效率的影响Northeastern University Oct 18, 2005 1、在编程序前,尽可能花剑有关的算术表达式和逻辑表达式;2、仔细检查算法中的嵌套的循环,尽可能将某些语句或表达式移到循环外面;3、尽量避免使用多维数组;4、尽量避免使用指针和复杂的表;5、采用“快速”的算术运算;(y2=yy)6、不要混淆数据类型,避免在表达式中出现类型混杂;7、选用等效的高效算法。59软件开发规范Northeastern Univers

43、ity Oct 18, 2005 一、排版: 1.关键词和操作符之间加适当的空格。 2.相对独立的程序块与块之间加空行 3.较长的语句、表达式等要分成多行书写。 4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。 5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 7.若函数或过程中的参数较长,则要进行适当的划分。 8.不允许把多个短语句写在一行中,即一行只写一条语句。 9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 10.C/C+语言是用大括号和界定一段程序块的,编写程序块时和

44、 应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体 的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、 switch、case语句中的程序都要采用如上的缩进方式。 60软件开发规范Northeastern University Oct 18, 2005 二、注释 1.注释要简单明了。 2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。 3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。 4.对代码的注释应放在其上方相邻位置,不可放在下面。 5.对数

45、据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。 6.变量、常量的注释应放在其上方相邻位置或右方。 7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。 8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成 日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其 它文件关系等);主要函数或过程清单及本文件历史修改记录等。 9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描 述;输入、输出及返回值说明;调用关系及被调

46、用关系说明等。 61软件开发规范Northeastern University Oct 18, 2005三、命名 1.较短的单词可通过去掉“元音”形成缩写; 2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。 3.使用匈牙利表示法 四、可读性 1.避免使用不易理解的数字,用有意义的标识来替代。 2.不要使用难懂的技巧性很高的语句。 3.源程序中关系较为紧密的代码应尽可能相邻。 62软件开发规范Northeastern University Oct 18, 2005五、变量 1.去掉没必要的公共变量。 2.构造仅有一个模块或函数可以修改、创建,而其余有关

47、模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。 3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。 4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。 5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。 6.防止局部变量与公共变量同名。 7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。 8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地(如预留一些空间等)。 9.留心具体语言及编译器处理不同数据类型的原则及有关细节。

48、 10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。 11.编程时,要注意数据类型的强制转换。 63软件开发规范Northeastern University Oct 18, 2005六、函数、过程 1.函数的规模尽量限制在200行以内。 2.一个函数最好仅完成一件功能。 3.为简单功能编写函数。 4.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。 5.尽量不要编写依赖于其他函数内部实现的函数。 6.避免设计多参数函数,不使用的参数从接口中去掉。 7.用注释详细说明每个参数的作用、取值范围及参数间的关系。 8.检查函数所有参数输入的有效性。 9.检查函数所

49、有非参数输入的有效性,如数据文件、公共变量等。 10.函数名应准确描述函数的功能。 11.避免使用无意义或含义不清的动词为函数命名 12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 13/明确函数功能,精确(而不是近似)地实现函数设计。 14.减少函数本身或函数间的递归调用。 64过程实时控制Northeastern University Oct 18, 200565过程实时控制Northeastern University Oct 18, 200566程序,进程和线程的概述16位的中,应用程序只有在调用了GetMessage,PeekMessage等函数后,才有可能把CPU控制权

50、交给系统,别的应用程序才有可能得到CPU的控制权Windows 95/NT实行抢先式多任务,程序对CPU的占用时间是由系统决定的。系统为每个程序分配一定的CPU时间,当程序的运行超过规定的时间后,系统就会中断该程序并把CPU控制权交给别的程序67进程和线程在32位的Win32系统中,多任务是指系统可以同时运行多个进程,而每个进程可以同时执行多个线程。每个程序一般对应一个进程,每个进程中可以运行多个线程,每个线程独立地执行程序代码中的一组语句进程是系统进行资源分配的基本单位,每个进程拥有自己的虚拟地址空间。每个进程拥有自己的主线程,但可以另外建立其它的线程。进程中的线程是并行执行的线程是Wind

51、ows95/98和Windows NT系统调度的基本单位,一个进程至少拥有一个主线程。进程可以通过调用库函数或Win32 API函数来增加线程。系统为每一个线程分配一个CPU时间片。实际上,每一个微观时刻只有一个线程在运行,因为只有一个CPU68线程的种类线程分为用户界面线程和工作者线程两种用户界面线程拥有自己的消息循环来处理界面消息,可以与用户进行交互工作者线程没有自身的消息循环,一般用来完成后台工作69MFC中的线程类CWinThread类派生自CcmdTarget类,CWinThread对象代表在一个应用程序内运行的线程。CWinThread对象允许一个应用程序拥有多个线程CWinThr

52、ead支持两种类型的线程:工作者线程和用户界面线程。工作者线程没有收发消息的功能,例如进行后台计算。用户界面线程具有收发消息的功能,CWinApp及其派生类就是用户界面线程的例子,其它用户界面线程也可由CWinThread派生为了创建一个线程,必须调用AfxBeginThread函数。如果需要用户界面线程,则将指向CWinThread派生类的CRuntimeClass的指针传递给AfxBeginThread;如果需要工作者线程,则将指向控制函数的指针和控制函数的参数传递给AfxBeginThread70线程的创建工作者线程的创建用户界面线程的创建71工作者线程的创建首先完成控制函数的编写用函数

53、AfxBeginThread来启动线程72工作者线程的创建控制函数:UINT MyWorkThreadFunction(LPVOID pParam)CWnd * pMainWnd = AfxGetMainWnd();/如果参数pParam为空,即参数传递错误,那么线程异常结束if(pParam=NULL):MessageBox(pMainWnd-m_hWnd,Param error,Thread error,MB_OK);AfxEndThread(2);CString *pStr = (CString *)pParam; /指针传递给pStrpStr-MakeReverse(); /调用类成员

54、函数,完成对字符串的逆序操作MessageBox(pMainWnd-m_hWnd,Thread run!,Thread run,MB_OK); /显示线程运行的消息框return 0;73工作者线程的创建用函数AfxBeginThread来启动线程AfxBeginThread(MyWorkThreadFunction,(LPVOID)pString);74用户界面线程的创建首先必须从CWinThread派生出一个新类。事实上,代表进程主线程的CWinApp类就是CWinThread的派生类。同时,需要重载派生类的InitInstance,ExitInstance,Run等函数使用AfxBegi

55、nThread函数的第二个版本来创建用户界面线程:CWinThread* AfxBeginThread(CRuntimeClass* pThreadClass,int nPriority=THREAD_PRIORITY_NORMAL,UNIT nStackSize=0,DWORD dwreateFlags=0,LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);75创建线程的其它方法通过构造一个CWinThread派生对象,再调用其成员函数CreateThread()来创建一个新线程76线程的启动当使用AfxBeginThread()来创建一个工作者线程时,

56、参数dwCreateFlags指定了线程的初始状态,通常为0,那么线程在创建后立即执行;如果为CREATE_SUSPENDED,在线程在被创建后挂起,指导其它线程调用ResumeThread()时才继续执行77线程的终止当发生以下事情之一时,线程终止:线程调用ExitThread线程函数返回调用全局函数AfxEndThread.78线程运行状态的设置线程启动时,参数dwCreateFlags为则立即执行,为CREATE_SUSPENDED则挂起使用由CWinThread类派生的线程时,可用SuspendThread()将自身挂起,被其它线程调用ResumeThread()继续执行线程自身可调用休眠函数:Sleep(DWORD dwMilliseconds)。此函数用于执行那些本质是基于时间的线程,比如动画控制的后台线程7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论