zoukankan      html  css  js  c++  java
  • 18 RTX Kernel实时系统

    18.1实时系统与前后台系统

    1. 实时系统

    实时系统简称RTOS,能够运行多个任务,并且根据不同任务进行资源管理、任务调度、消息管理等工作,同时RTOS能够根据各个任务的优先级来进行任务调度,以达到保证实时性的要求。RTOS能够使CPU的利用率得到最大的发挥,并且可以使应用程序模块化,而在实时应用中,开发人员可以将复杂的应用程序层次化,这样代码更加容易设计与维护,比较常见的RTOSucosVxWorksfreertos,更譬如较高级的应用在手机上的操作系统主要有Palm OSSymbian(塞班)、Windows mobile、LinuxAndroid(安卓)、iPhone(苹果)OS如图18.1-1、Black Berry(黑莓)OS 6.0Windows Phone 7(自Windows Phone7出现后,Windows Mobile系列正式退出手机系统市场),这些系统都是一个实时性、多任务的纯32位操作系统 。 

    实时系统是任何必须在指定的有限时间内给出响应的系统。在这种系统中,时间起到重要的作用,系统成功与否不仅是看是否输出了逻辑上正确的结果,而且还要看它是否在指定时间内给出了这个结果。

    按照对时间要求的严格程度,实时系统被划分为硬实时(hard real time)、固实时(firm real time)和软实时(soft real time)。硬实时系统是指系统响应绝对要求在指定的时间范围内。软实时系统中,及时响应也很重要,但是偶尔响应慢了也可以接受。而在固实时系统中,不能及时响应会造成服务质量的下降。

    飞机的飞行控制系统是硬实时系统,因为一次不能及时响应很可能会造成严重后果。数据采集系统往往是软实时系统,偶尔不能及时响应可能会造成采集数据不准确,但是没有什么严重后果。VCD机控制器如果不及时播放画面,不会造成什么大的损失,但是可能用户会对产品质量失去信心,这样的系统可以算作固实时系统。

    常见的实时系统通常由计算机通过传感器输入一些数据,对数据进行加工处理后,再控制一些物理设备做出响应的动作。比如冰箱的温度控制系统需要读入冰箱内的温度,决定是否需要继续或者停止温度。由于实时系统往往是大型工程项目的核心部分,控制部件通常嵌入在大的系统中,而控制程序则固化在ROM中,因此有时也被称作嵌入式系统(embedded system)。

    实时系统需要响应的事件可以分为周期性(periodic)和非周期性的(aperiodic)的。比如空气检测系统每过100ms通过传感器读取一次数据,这是周期性的;而战斗机中的飞行控制系统需要面对各种突发事件的,属于非周期性的。

    实时系统有以下特点:

    l 要和现实世界交互

    这是实时系统区别于其他系统的一个显著特点。它往往要控制外部设备,使之及时响应外部事件。

    比如生产车间的机器人,必须把零部件准确地组装起来。

    l 系统庞大复杂

    实时系统的复杂性不仅仅体现在代码的行数上,而且体现在需求的多样性。由于实时系统要和现实世

    界打交道,而现实世界总是变化的,这会导致实时系统在生命周期里时常面对需求的变化,不得不作出相应的变化。

    l 对可靠性和安全性的要求非常高

    很多实时系统应用在十分重要的地方,有些甚至关系到生命安全。系统的失败会导致生命和财产的损失,这就要求实时系统有很高的可靠性和安全性。

    l 并发性强

    实时系统常常需要同时控制许多外围设备,例如,系统需要同时控制传感器、传送带和传感器等设备。多数情况下,利用微微控制器时间片分配给不同的进程,可以模拟并行。但是在系统对响应时间要求十分严格的情况下,分配时间片模拟的方法可能无法满足要求。这时,就得考虑使用多处理机系统。这就是为什么多处理机系统最早是在实时系统领域里繁荣起来的原因所在。

    使用实时系统可以简化应用程序的设计:

    1)操作系统的多任务和任务间通信的机制允许复杂的应用程序被分成一系列更小的和更多的可以管理的任务。

    2)程序的划分让软件测试更容易,团队工作分解,也有利于代码复用。

    3)复杂的定时和程序先后顺序的细节,可以从应用程序代码中删除。

     

     

    2. 前后台系统

    如果不搭载实时系统的称作前后台系统架构,例如前面已做过的实验如GPIO、定时器、数码管实验等都是前后台系统架构,任务顺序地执行的,而前台指的是中断级,后台指的是main函数里的程序即任务级,前后台系统又叫作超级大循环系统,这个可以从“while(1)”关键字眼就可以得知。在前后台系统当中,关键的时间操作必须通过中断操作来保证实时性,由于前后台系统中的任务是顺序执行的,中断服务函数提供的信息需要后台程序走到该处理这个信息这一步时才能得到处理的,倘若任务数越多,实时性更加得不到保证,因为循环的执行时间不是常数,程序经过某一特定部分的准确时间也是不能确定的。进而,如果程序修改了,循环的时序也会受到影响。很多基于微微控制器的产品采用前后台系统设计,例如微波炉、电话机、玩具等。在另外一些基于微微控制器的应用中,从省电的角度出发,平时微微控制器处在停机状态(halt),所有的事都靠中断服务来完成。

     

     

    3. 实时系统与前后台系统比较

     

    实行系统与前后台系统最明显的区别就是任务是否具有并发性,图18.1-2表示实时系统任务执行的

    状态,图18.1-3表示前后台系统任务执行的状态。

         

    图18.1-2 实时系统执行任务状态

     

     

     

    图18.1-3 前后台系统执行任务状态

        从图18.1-2可以看出,传统的微控制器同时只能执行一个任务,只是通过快速的任务切换,实时系统的所有任务(任务1、任务2和任务3)执行看起来是同时执行的。

    从图18.1-3可以看出,前后台系统默认遵守了传统的微控制器只能同时执行一个任务的特性,顺序地执行任务1、任务2和任务3。 

    ……………………………………

     

     

    书籍下载地址(复制到下载工具进行下载):

     

     

     

    https://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part1.rar

     

     

     

    https://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part2.rar

     

     

     

    注:书籍内容会不定期进行更新!

     

  • 相关阅读:
    彻底弄懂GMT、UTC、时区和夏令时
    揭秘webpack loader
    揭秘webpack plugin
    封装axios
    webpack优化之玩转代码分割和公共代码提取
    node.js操作数据库之MongoDB+mongoose篇
    GitHub项目徽标
    Java中容易遗漏的小知识点( 一 )(为了和小白一样马上要考试的兄弟准备的,希望小白和大家高过不挂)
    QNX Message Passing,一个让人头秃的 IPC BUG
    【百面】02_模型评估
  • 原文地址:https://www.cnblogs.com/wenziqi/p/2358280.html
Copyright © 2011-2022 走看看