标题：RTOS系统
什么是RTOS
1.RTOS是一个内核 
典型的单片机程序在程序指针复位后，首先进行堆栈、中断、中断向量、定时器、串行口等接口设置、初始化数据存储区和显示内容，然后就来到了一个监测、等待或空循环，在这个循环中，CPU可以监视外设、响应中断或用户输入。 
这段主程序可以看作是一个内核，内核负责系统的初始化和开放、调度其它任务，相当于C语言中的主函数。 
RTOS就是这样的一个标准内核，包括了各种片上外设初始化和数据结构的格式化，不必、也不推荐用户再对硬件设备和资源进行直接操作，所有的硬件设置和资源访问都要通过RTOS核心。硬件这样屏蔽起来以后，用户不必清楚硬件系统的每一个细节就可以进行开发，这样就减少了开发前的学习量。 
一般来说，对硬件的直接访问越少，系统的可靠性越高。RTOS是一个经过测试的内核，与一般用户自行编写的主程序内核相比，更规范，效率和可靠性更高。对于一个精通单片机硬件系统和编程的“老手”而言，通过RTOS对系统进行管理可能不如直接访问更直观、自由度大，但是通过RTOS管理能够排除人为疏忽因素，提高软件可靠性。 
另外，高效率地进行多任务支持是RTOS设计从始至终的一条主线，采用RTOS管理系统可以统一协调各个任务，优化CPU时间和系统资源的分配，使之不空闲、不拥塞。针对某种具体应用，精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的效率；但是对于大多数一般用户和新手而言，采用RTOS是可以提高资源利用率的，尤其是在片上资源不断增长、产品可靠性和进入市场时间更重要的今天。 
2.RTOS是一个平台 
RTOS建立在单片机硬件系统之上，用户的一切开发工作都进行于其上，因此它可以称作是一个平台。采用RTOS的用户不必花大量时间学习硬件，和直接开发相比起点更高。 
RTOS还是一个标准化的平台，它定义了每个应用任务和内核的接口，也促进了应用程序的标准化。应用程序标准化后便于软件的存档、交流、修改和扩展，为嵌入式软件开发的工程化创造了条件、减少开发管理工作量。嵌入式软件标准化推广到社会后，可以促进软件开发的分工，减少重复劳动，近来出现的建立于RTOS上的文件和通信协议库函数产品等就是实例。 
RTOS对于开发单位和开发者个人来说也是一种提高。引入RTOS的开发单位，相当于引入了一套行业中广泛采用的嵌入式系统应用程序开发标准，使开发管理更简易、有效。基于RTOS和C语言的开发，具有良好的可继承性，在应用程序、处理器升级以及更换处理器类型时，现存的软件大部分可以不经修改地移植过来。 
对于开发人员来说，则相当于在程序设计中采用一种标准化的思维方式，提高知识创造的效率；同时因为具有类似的思路，可以更快地理解同行其它人员的创造成果
RTOS系统的特点
一、时间约束性
实时系统的任务具有一定的时间约束（截止时间）。根据截止时间，实时系统的实时性分为“硬实时”和“软实时”。硬实时是指应用的时间需求能够得到完全满足，否则就造成重大安全事故，甚至造成重大的生命财产损失和生态破坏，如在航空航天、军事、核工业等一些关键领域中的应用。软实时是指某些应用虽然提出时间需求，但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响，如监控系统等和信息采集系统等。
二、可预测性
可预测性是指系统能够对实时任务的执行时间进行判断，确定是否能够满足任务的时限要求。由于实时系统对时间约束要求的严格性，使可预测性称为实时系统的一项重要性能要求。除了要求硬件延迟的可预测性以外，还要求软件系统的可预测性，包括应用程序的响应时间是可预测的，即在有限的时间内完成必须的工作；以及操作系统的可预测性，即实时原语、调度函数等运行开销应是有界的，以保证应用程序执行时间的有界性。
三、可靠性
大多数实时系统要求有较高的可靠性。在一些重要的实时应用中，任何不可靠因素和计算机的一个微小故障，或某些特定强实时任务（又叫关键任务）超过时限，都可能引起难以预测的严重后果。为此，系统需要采用静态分析和保留资源的方法及冗余配置，使系统在最坏情况下都能正常工作或避免损失。可靠性已成为衡量实时系统性能不可缺少的重要指标。
四、与外部环境的交互作用性
实时系统通常运行在一定的环境下，外部环境是实时系统不可缺少的一个组成部分。计算机子系统一般是控制系统，它必须在规定的时间内对外部请求做出反应。外部物理环境往往是被控子系统，两者互相作用构成完整的实时系统。大多数控制子系统必须连续运转以保证子系统的正常工作或准备对任何异常行为采取行动。
早期的实时系统功能简单，包括单板机、单片机，以及简单的嵌入式实时系统等，其调度过程相对简单。随着实时系统应用范围的不断扩大，系统复杂性不断提高，实时系统具有以下新特点。
1、多任务类型
在实时系统中，不但包括周期任务、偶发任务、非周期任务，还包括非实时任务。实时任务要求要满足时限，而非实时任务要求要使其响应时间尽可能的短。多种类型任务的混合，使系统的可调度性分析更加困难。
2、约束的复杂性
任务的约束包括时间约束、资源约束、执行顺序约束和性能约束。时间约束是任何实时系统都固有的约束。资源约束是指多个实时任务共享有限的资源时，必须按照一定的资源访问控制协议进行同步，以避免死锁和高优先级任务被低优先级任务堵塞的时间（即优先级倒置时间）不可预测。执行顺序约束是指各任务的启动和执行必须满足一定的时间和顺序约束。例如，在分布式端到端（end-to-end）实时系统很重，同一任务的各子任务之间存在前驱/后驱约束关系，需要执行同步协议来管理子任务的启动和控制子任务的执行，使它们满足时间约束和系统可调度要求。性能约束是指必须满足如可靠性、可用性、可预测性、服务质量（Quality of Service,QoS）等性能指标。
3、具有短暂超载的特点
在实时系统中，即使一个功能设计合理、资源充足的系统也可能由于一下原因超载：
1）系统元件出现老化，外围设备错误或系统发生故障。随着系统运行时间的增长，系统元件出现老化，系统部件可能发生故障，导致系统可用资源降低，不能满足实时任务的时间约束要求。
2）环境的动态变化。由于不能对未来的环境、系统状态进行正确有效地预测，因此不能从整体角度上对任务进行调度，可能导致系统超载。
3）应用规模的扩大。原先满足实时任务时限要求的系统，随着应用规模的增大，可能出现不能满足任务时限要求的情况，而重新设计、重建系统在时间和经济上又不允许。
RTOS系统的分类
实时系统主要分为以下两类。
强实时系统（Hard Real-Time）：在航空航天、军事、核工业等一些关键领域中，应用时间需求应能够得到完全满足，否则就造成如飞机失事等重大地安全事故，造成重大地生命财产损失和生态破坏。因此，在这类系统的设计和实现过程中，应采用各种分析、模拟及形式化验证方法对系统进行严格的检验，以保证在各种情况下应用的时间需求和功能需求都能够得到满足。
弱实时系统（Soft Real-Time）：某些应用虽然提出了时间需求，但实时任务偶尔违反这种需求对系统的运行以及环境不会造成严重影响，如视频点播（Video-On-Demand，VOD）系统、信息采集与检索系统就是典型的弱实时系统。在VOD系统中，系统只需保证绝大多数情况下视频数据能够及时传输给用户即可，偶尔的数据传输延迟对用户不会造成很大影响，也不会造成像飞机失事一样严重的后果。
RTOS系统的调度
为了精确管理“时间”资源，已达到实时性和与预测性要求，并能够满足是实时系统的新要求，需用实时调度理论对任务进行调度和可调度性分析。任务调度技术包括调度策略和可调度性分析方法，两者是紧密结合的。任务调度技术研究的范围包括任务使用系统资源（包括处理机、内存、I/O、网络等资源）的策略和机制，以及提供判断系统性能是否可预测的方法和手段。例如，什么时候调度任务运行、在哪运行（当系统为多处理机系统或分布式系统时）、运行多长时间等等；以及判断分析用一定参数描述的实时任务能否被系统正确调度。
给定一组实时任务和系统资源，确定每个任务何时何地执行的整个过程就是调度。在非实时系统中，调度的主要目的是缩短系统平均响应时间，提高系统资源利用率，或优化某一项指标；而实时系统中调度的目的则是要尽可能地保证每个任务满足他们的时间约束，及时对外部请求做出响应。实时调度技术通常有多种划分方法，常用以下两种。
抢占式调度和非抢占式调度
1）抢占式调度通常是优先级驱动的调度。每个任务都有优先级，任何时候具有最高优先级且已启动的任务先执行。一个正在执行的任务放弃处理器的条件为：自愿放弃处理器（等待资源或执行完毕）；有高优先级任务启动，该高优先级任务将抢占其执行。除了共享资源的临界段之外，高优先级任务一旦准备就绪，可在任何时候抢占低优先级任务的执行。抢占式调度的优点是实时性好、反应快，调度算法相对简单，可优先保证高优先级任务的时间约束，其缺点是上下文切换多。而非抢占式调度是指不允许任务在执行期间被中断，任务一旦占用处理器就必须执行完毕或自愿放弃。其优点是上下文切换少；缺点是在一般情况下，处理器有效资源利用率低，可调度性不好。
静态表驱动策略和优先级驱动策略
2）静态表驱动策略（Static Table-Driven Scheduling）是一中离线调度策略，指在系统运行前根据各任务的时间约束及关联关系，采用某种 搜索策略生成一张运行时刻表。这张运行时刻表与列车运行时刻表类似，指明了各任务的起始运行时刻及运行时间。运行时刻表一旦生成就不再发生变化了。在系统运行时，调度器只需根据这张时刻表启动相应的任务即可。由于所有调度策略在离线情况下指定，因此调度器的功能被弱化，只具有分派器（Dispatcher）的功能。
优先级驱动策略指按照任务优先级的高低确定任务的高低确定任务的执行顺序。优先级驱动策略又分为静态优先级调度策略。静态优先级调度是指任务的优先级分配好之后，在任务的运行过程中，优先级不会发生改变。静态优先级调度又称为固态优先级调度。动态优先级调度是指任务的优先级可以随着时间或系统状态的变化而发生变化。
RTOS产生并得到迅速发展的原因
单片机处理器能力的提高和应用程序功能的复杂化、精确化，迫使应用程序划分为多个重要性不同的任务，在各任务间优化地分配CPU时间和系统资源，同时还要保证实时性。靠用户自己编写一个实现上述功能的内核一般是不现实的，而这种需求又是普遍的。在这种形势之下，由专业人员编写的、满足大多数用户需要的高性能RTOS内核就是一种必然结果了。 
对程序实时性和可靠性要求的提高也是RTOS发展的一个原因。此外，单片机系统软件开发日趋工程化，产品进入市场时间不断缩短，也迫使管理人员寻找一种有利于程序继承性、标准化、多人并行开发的管理方式。从长远的意义上来讲，RTOS的推广能够带来嵌入式软件工业更有效、更专业化的分工，减少社会重复劳动、提高劳动生产率。