RTOS有 什么 优点 ?

RTOS有 什么 优点 ?,第1张

随着信息家电的普及,智能化、网络化将会无所不在,所有这些都离不开嵌入式软件,而在嵌入式软件只中最核心的莫过于RTOS(Real Time Operating System,实时 *** 作系统)。我们都非常熟悉Windows这样的 *** 作系统,但却不一定熟悉嵌入式系统中常用的RTOS。如今,微软已经推出了Windows的嵌入式版本??Windows CE。而风靡一时的Linux也在嵌入式系统中扮演着重要角色。这样看来,传统桌面 *** 作系统和嵌入式 *** 作系统的界线似乎也在淡化。事实究竟如何呢?

RTOS的必备特性

用于嵌入式环境的 *** 作系统RTOS与桌面 *** 作系统有很多本质的不同。这些不同的特性导致产品开发的不同结果。

嵌入式环境给人的第一印象就是占用空间小。所以举明,普通的Linux或者Windows *** 作系统要变成嵌入式 *** 作系统,首先就是要进行裁剪。然而,与桌面环境相比,嵌入式环境对于 *** 作系统系统要求不仅仅是“小”,二者在设计要求上有着本质的不同。这些不同主要体现在可裁剪性、实时性和可靠性等三个方面。

随机应变??可裁剪性

从硬件环境来看,桌面 *** 作系统具有标准化的CPU、存储和I/O架构,而嵌入式环境中的RTOS的硬件环境只有标准化的CPU,没有标准化的存储、I/O和显示器架构。

从应用环境来看,桌面 *** 作系统面向复杂多变的应用,而RTOS面向单一设备的单一应用。

从开发界面来看,桌面 *** 作系统试图给开发人员提供一个“黑箱”,让开发人员通过一系列标准的系统调用来使用 *** 作系统中的功能,而嵌入式试图为开发人员提供一个“白箱”,让开发人员可以自主控制系统的所有资源。

总之,桌面 *** 作系统的研究开发指导思想是尽可能在不改变自身的前提下具有广泛的适应性。也就是说:不论应用环境怎么变化,最好都不要对自身内部产生什么影响,也不要求自身做太多的变化。反过来,应用于嵌入式环境的RTOS,在研发的时候就必须立足于改变自身、开放自身,让开发人员可以根据硬件环境和应用环境的不同而对 *** 作系统进行灵活的裁剪和配置,因为对于任何一个具体的嵌入式设备,它的功能是确定的,因此只要从原有 *** 作系统中把这个特定应用所需的功能拿进来即可。

应当指出的是:如果一个 *** 作系统平台只能依靠手工的方式去掉一些代码,这根本就不是可裁剪性。所谓可裁剪性是在软件工程阶段利用软件配置方法实现软件构件的“即插即用”。

可裁剪性带给用户的一个最直接的好处是硬件成本降低,这对于成本敏感的应用,如消费电子类设备,具有重要的现实意义。由于设备中只包含应用程序用到的那部分 *** 作系统功能,这就使得系统变得简单、易把握,从而提高系统的可靠性。

精确到位??实时性

许多人都把实时性理解为速度快。那么,速度快到什么程度才算是达到实时性呢?其实,所谓实时性,其核心含义在于确定性,而不是单纯的速度快。也就是说,RTOS所要求的是在规定的时间内做完应该做的事情,并且 *** 作系统的行为(执行线索)是确定的,这是写出高可靠性程序的基础。如果完成同样的动作,有的时候快,有的时候慢,且执行线索千差万别,程序员无法把握,可靠性就无从保证。

嵌入式系统为什么对实时性要求那么高呢?因为嵌入式系统主要是对仪器设备的动作进行监测控制的,而一般的桌面 *** 作系统基本上是根据人在键盘和鼠标发出的命令进行工作庆宴。相对而言,仪器设备的动作具有严格的、机械的时序要求,而人的动作和反应在时序上并不那么严格。比如,用于控制火箭发动机的嵌入式系统,它所发出的指令不仅要速度快,而且多个发动机之间的时序要求非常严格,否则就会差之毫厘、谬之千里。在这样的应用环境中,非实时的普通 *** 作系统无论如何是无法适应的。

如果我们所开发的设备并不是像航空航天器那样生命攸关或者生产控制那样的关键任务系统,而是像消费电子类那样,即使出现错误也不会造成灾难性后果的设备,那么实时性(严格地讲是确定性)是否还具有现实意义呢?答案是肯定的!设备的高可靠性可以有效地降低维护成本;软件运行效率高也会降低对CPU的要求,从而降低硬件成本。对于消费电子产品这类价格十分敏感的产品,实时性、可靠性仍然是非常值得重视的问题。

坚如磐石——可靠性

桌面 *** 作系统与RTOS相比,另一个差别就是对于稳定正差告性、可靠性方面的设计思路。一方面,桌面 *** 作系统比较庞大、复杂,而RTOS比较小巧、简捷,而“越简单、越可靠,越复杂、故障概率越大”这又是一个常理。另一方面,更重要的是:桌面 *** 作环境与嵌入式环境在设计思路上有一个重大的不同??桌面环境假定应用软件与 *** 作系统相比而言可以是不可靠的,而嵌入式环境假定应用软件与 *** 作系统一样可靠。

运行于嵌入式环境中的RTOS要求应用软件具有与 *** 作系统同样的可靠性,这种设计思路对应用开发人员提出了更高的要求,同时也要求 *** 作系统自身足够开放。

著名的“木桶原理”告诉我们,局部的不足会导致整体的缺陷。要保证系统的可靠性,必须保证系统中每一个部分都是可靠的,任何部分的不可靠都会导致系统整体的不可靠。大多数桌面系统都是上千万行代码的庞大而复杂的系统,即使有源代码程序员也难以把握。而且对开发人员来说,桌面系统庞杂的细节是隐蔽在一个个的固定的接口下的,是一个黑箱,很难把握具体执行的线索。即便其内核是足够可靠的,但它的应用环境复杂多样、千差万别,其中常常有一些应用并不是那么稳定可靠,从而破坏了整体系统的可靠性。相反,RTOS对软件开发人员来说是完全开放的,是一个白箱,允许开发人员非常清楚地了解和掌握 *** 作系统内部情况,对存储器中的每一位和每一个I/O接口进行 *** 作控制,从而可以设计出高效稳定的应用软件。

优点:

1、硬实时响应

基于优先级抢占的RTOS,根据任务的实时需求,执行优先调度。有严格时序限制的任务可以优先执行,提高应用程序对时间关键事件的响应。

2、系统性能最大化

针对大型的、复杂的嵌入式应用,使用一个事件驱动的RTOS,来替代基于轮询的超循环结构,可以生成一个更有效的设计,更小的存储占用,应用可以获得更多的处理器时间。

3、降低复杂度

RTOS允许应用划分为一个个小的自主运行的任务。任务执行自己的上下文中,不依赖其它任务或调度器。

缺点:

代码重用:RTOS系统中的模块化设计,鼓励将软件功能创建为独立的、验证过的任务。其独立性使得在其它设计中重用这些模块变得很简单。

定义:

实时 *** 作系统是保证在一定时间限制内完成特定功能的 *** 作系统。实时 *** 作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成 *** 作,这是在 *** 或逗作系统设计时保证的。

软实时则只要按照任务的优先级,尽可能快地完成 *** 作即可。我们通常使用的 *** 作系统在经过一定改变之后就可以变成实时 *** 作系统。

例如,可以为确保生产线上的机器人能获取某个物体而设计一个 *** 作系脊团轿统。在“硬”实时 *** 作系统中,如果不能在允许时间内完成使物体可达的计算, *** 作系统将因错误结束。

在“软”实时 *** 作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时 *** 作系统是为特定的应用设计的,另一些是通用的。一些通用目的的 *** 作系统称自己为实时 *** 作樱肆系统。

以上内容参考:百度百科-实时 *** 作系统

分类: 电脑/网络 >> *** 作系统/系统故障

解析:

实时多任务 *** 作系统(RTOS)1.实时多任务 *** 作系统(RTOS)

(1)更加面向硬件系统,而不是 *** 作者

嵌入式系统处理器一般都是独立工作的,没有人的直接参与;即使参与,也没有大量的文字信息输出,这是和桌面计算机有所不同的。因此RTOS着重面向的是硬件,而不是具有完整的人机界面。

(2)实时性

单片机系统的监测、控制、通信等工作都要求实时性,一旦出现有关情况,CPU能够及时响应,刻不容缓。为此,一个实用的RTOS都应具有完善的中断响应机制,保证中断响应潜伏时间足够短。

(3)多任务

半导体技术的发展和应用复杂性的增长促使CPU的处理能力越来越高,当今的一片16位或32位单片机,在运算速度、寻址能力等方面可以相当于8位单片机的几十片之和。在这样强大的处理器上运行应用程序,必然不是整块,而是根据所要实现的若干方面功能,划分为数个任务,这样有利于软件的开发和维护。

因此单片机系统中采用的RTOS必然是支持多任务的,并能够根据各个任务的轻重缓急,合理地在它们之间分配CPU和各种资源的占用时间。

(4)不同的典型外设驱动支持

单片机的典型片内外设为定时器、A/D、PWM、D/A、串行口、LCD/LED接口,CAN-bus、IC-bus等。根据处理器类型的不同,RTOS在出厂时一般附带若干上面硬件接口的驱动程度,而网卡等片外设备的驱动程序,以及其它一些高级驱动函数,如兼容DOS的文件系统、TCP/IP协议等,则需要另行选购。以RTOS为基础和接口标准,可以设计出大量的库函数驱动模块,并根据实际需要选择或裁剪。

(5)高可靠性

一般计算机的 *** 作系统出现问题,例如死机,除数据丢失等外,不会有太大的链虚正问题;而单片机系统一般都是和工业控制、交通工具、医用器械等机电系统密切相关,不适当的输出甚至不及时的棚悔输出都可能会带来财产损失和安全问题。因此嵌入式系统中的RTOS要求高可靠性,发行之前必须经过严格的测试。这是一个耗费时间和精力的过程,也是RTOS价格普遍高于一般 *** 作系统的原因之一。

2.RTOS是一个内核

典型的单片机程序在程序指针复位后,首先进行堆栈、中断、中断向量、定时器、串行口等接口设置、初始化数据存储区和显示内容,然后就来到了一个监测、等待或空循环,在这个循环中,CPU可以监视外设、响应中断或用户输入。

这段主程序可以看作是一个内核,内核负责系统的初始化和开放、调度其它任务,相当于C语言中的主函数。

RTOS就是这样的一个标准内核,包括了各种片上外设初始化和数据结构的格式化,不必、也不推荐用户再对硬件设备和资源进行直接 *** 作,所有的硬件设置和资源访问都要通过RTOS核心。硬件这样屏蔽起来以后,用户不必清楚硬件系统的每一个细节就可以进行开发,这样就减少了开发前的学习量。

一般来说,对硬件的直接访问越少,系统的可靠性越高。RTOS是一个经过测试的内核,与一般用户自行编写的主程序内核相比,更规范,效率和可靠性更高。对于一个精通单片机硬件系统和编程的“老手”而言,通过RTOS对系统进行管理可能不如直接访问更直观、自由度大,但是通过RTOS管理能够排除人为疏忽因素,提高软件可靠性。

另外,高效率地进行多任务支持是RTOS设计从始至终的一条主线,采用RTOS管理系统可以统一协调各个任务,优化CPU时间和系统资源的分配,使之不空闲、不拥塞。针对某种具体应用,精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的效率;但是对于大多数一般用户和新手而言,采用RTOS是可以提高资源利用率的,尤其是在片上资源不断增长、产品可靠性和进入市场时间更重要的今天。

3.RTOS是一个平台

RTOS建立在单片机硬件系统之上,用户的一切开发工作都进行于其上,因此它可以称作是一个平台。采用RTOS的用户不必花大量时间学习硬件,和直接开发相比起点更高。

RTOS还是一个标准化的平台,它定义了每个应用任务和内核的接口,也促进了应用程序的标准化。应用程序标准化后便于软件的存档、交流、修改和扩展,为嵌入式软件开发的工誉春程化创造了条件、减少开发管理工作量。嵌入式软件标准化推广到社会后,可以促进软件开发的分工,减少重复劳动,近来出现的建立于RTOS上的文件和通信协议库函数产品等就是实例。

RTOS对于开发单位和开发者个人来说也是一种提高。引入RTOS的开发单位,相当于引入了一套行业中广泛采用的嵌入式系统应用程序开发标准,使开发管理更简易、有效。基于RTOS和C语言的开发,具有良好的可继承性,在应用程序、处理器升级以及更换处理器类型时,现存的软件大部分可以不经修改地移植过来。

对于开发人员来说,则相当于在程序设计中采用一种标准化的思维方式,提高知识创造的效率;同时因为具有类似的思路,可以更快地理解同行其它人员的创造成果。

4.RTOS产生并得到迅速发展的原因

单片机处理器能力的提高和应用程序功能的复杂化、精确化,迫使应用程序划分为多个重要性不同的任务,在各任务间优化地分配CPU时间和系统资源,同时还要保证实时性。靠用户自己编写一个实现上述功能的内核一般是不现实的,而这种需求又是普遍的。在这种形势之下,由专业人员编写的、满足大多数用户需要的高性能RTOS内核就是一种必然结果了。

对程序实时性和可靠性要求的提高也是RTOS发展的一个原因。此外,单片机系统软件开发日趋工程化,产品进入市场时间不断缩短,也迫使管理人员寻找一种有利于程序继承性、标准化、多人并行开发的管理方式。从长远的意义上来讲,RTOS的推广能够带来嵌入式软件工业更有效、更专业化的分工,减少社会重复劳动、提高劳动生产率。

5.RTOS的基本特征

(1)任务

任务(Task)是RTOS中最重要的 *** 作对象,每个任务在RTOS的调用下由CPU分时执行。激活的或当前任务是CPU正在执行的任务,休眠的任务是在存储器中保留其执行的上下文背景、一旦切换为当前任务即可从上次执行的末尾继续执行的任务。任务的调度目前主要有时间分片式(TimeSlicing)、轮流查询式(Round-Robin)和优先抢占式(Preemptive)三种,不同的RTOS可能支持其中的一种或几种,其中优先抢占式对实时性的支持最好。

(2)任务切换

RTOS管理下的系统CPU和系统资源的时间是同时分配给不同任务的,这样看起来就象许多任务在同时执行,但实际上每个时刻只有一个任务在执行,也就是当前任务。任务的切换有两种原因。当一个任务正常地结束 *** 作时,它就把CPU控制权交给RTOS,RTOS则检查任务队列中的所有任务,判断下面那个任务的优先级最高,需要先执行。另一种情况是在一个任务执行时,一个优先级更高的任务发生了中断,这时RTOS就将当前任务的上下文保存起来,切换到中断任务。RTOS经常性地整理任务队列,删除结束的任务,增加新的要执行任务,并将其按照优先级从大到小的顺序排列起来,这样可以合理地在各个任务之间分配系统资源。

(3)消息和邮箱

消息(Message)和邮箱(Mailbox)是RTOS中任务之间数据传递的载体和渠道,一个任务可以有多个邮箱。通过邮箱,各个任务之间可以异步地传递信息,没有占用CPU时间的查询和等待。当RTOS包含片上总线接口驱动功能时,各个单片机之间的通信也通过邮箱的方式来进行,用户并不需要了解更深的关于硬件的内容。

(4)旗语

旗语(Semaphore)相当于一种标志(Flag),通过预置,一个事件的发生可以改变旗语。一个任务可以通过监测旗语的变化来决定其行动,在监测旗语变化的时候不消耗CPU时间,旗语对任务的触发是由RTOS来完成的。通过使用旗语,一个任务在等待事件变化的时候就可以不必不断查询,而把CPU时间出让给其它任务。

(5)存储区分配

RTOS对系统存储区进行统一分配,分配的方式可以是动态的或静态的,每个任务在需要存储区时都要向RTOS内核申请。RTOS通过使用存储分配类核心对象管理数据存储器,在动态分配时能够防止存储区的零碎化。

(6)中断和资源管理

RTOS提供了一种通用的设计用于中断管理,有效率而灵活,这样可以实现最小的中断潜伏时间和最大的中断响应度。RTOS内核中的资源对象类则实现了对系统实体资源或虚拟资源的独占式访问,一个任务可以取得对资源的唯一访问权,其它任务在资源释放以前无法访问,这样可以避免资源冲突。设计完善的RTOS具有检查可能导致系统死锁的资源调用设计。

上面是RTOS的基本特征。根据产品的不同,它可能还包含许多其它功能。

6.你的处理器是不是需要一套实时多任务 *** 作系统?

RTOS是目前嵌入式系统领域的热点之一,是流行的开发平台,但它毕竟对于许多用户来说还是昂贵的,还会大量改变用户习惯的开发方式,因此在引入RTOS以前对必要性进行考察还是明智的。你可以思考下面的几个问题:

(1)你的处理器控制的时间和方式和你预想的一样吗?

(2)你是否发现自己花费很多时间盘算怎样使一段代码在该执行的时候执行?

(3)你是否花费太多时间在中断子程序上,知道主程序不可能顺序地处理中断事件,便试图编出所有代码来处理中断事件?

(4)你是否发现自己在不断地测试标志或调用测试标志的子程序,来判断是否应当执行一段子程序?

如果你对上面问题的回答有一个以上是肯定的话,那么就是到了需要一套实时多任务 *** 作系统将你从编程的琐碎中解脱出来的时候了。

8.目前有什么样的RTOS?

当你在电子杂志上寻找RTOS的时候,可能会发现世界上研制RTOS产品的公司多得令你无所适从;但是仔细阅读后会发现,它们的产品可能只覆盖几种处理器,而且是你所不熟悉的。目前产品比较全面的公司主要有美国的CMXCompany和EmbeddedSystemProducts(ESP),Inc.,它们对中国单片机工业流行的单片机,如8051,251,196/296,P51XA,68xxx等都有RTOS及其相关的接口库函数产品,提供源程序代码,没有每个产品的二进制版税。其中CMX公司的产品价格略低,较适合中国市场;而ESP公司的产品则有较丰富的库函数支持


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12558114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存