从前后台系统到RTOS

    很多对单片机开发感兴趣的同学,之后都会继续学习嵌入式相关的知识。从单片机开发到嵌入式开发在软件方面最大的改变,也是一个质的飞跃,就是学习嵌入式必须要进入RTOS的领域,哪么单片机的前后台系统和嵌入式的RTOS系统究竟有何不同呢?

一、什么是前后台系统?

   有过单片机程序开发经历的同学必定对此不陌生。单片机所有子函数写完之后,必定是在一个主函数(main函数)里面对各个子函数进行调用。 主函数用一个死循环将所有任务不断地循环检测执行,具体的示意图如下:前后台系统示意图

    如图所示,所有的任务都是平级的,它们在无限循环的后台(while(1)的大循环)中运行或者等待运行条件的到来,一个任务的运行必须等待上一个任务运行结束。当然,单片机为了能够处理紧急的任务,设置了中断机制来处理紧急任务。我们把中断称为前台。所以前台程序可以中断后台程序的运行,获得资源先运行起来,等中断任务处理结束后,再回到原来后台任务的断点处,继续运行。但是由于中断本身要花费时间在断点的处理上面,大量使用中断会占用资源,浪费时间。可是,我们又希望能够有一个机制能够给予不同的任务等级之分,让紧急的程序能够先获得资源运行起来,而不是非要等到上一个程序运行结束。于是,机智的程序员们就开发出了实时操作系统。

二、实时操作系统RTOS

   实时操作系统(RTOS)的开发是为了能够让某些具有时效性、实时性任务可以优先获得资源运行起来。所以其特点就是让一些任务可以在一段指定的时间内完成。根据对时间的硬性要求,又可以将其分为软实时系统和硬实时系统。RTOS的示意图如下:

    如图所示,RTOS将任务分成了不同等级,总是让优先级高的任务先运行。同样,中断可以打断所有任务,来处理紧急任务。因为高等级的任务总是能先获得资源运行起来,所以可以满足对某些任务的时效性要求。

    当然,RTOS相比于前后台系统不仅仅只有实时性这一方面的进步,同时RTOS还能够通过分时原理并行的进行多任务的处理。在前后台系统中,一个任务如果缺少了某些继续运行所需的资源或者条件,就只能是CPU空转等待资源或者放弃任务。然而在RTOS中,则可以将这些任务挂起,使其进入等待状态,将CPU资源释放,使得其它任务得以运行,极大的提高了CPU的利用率。

    并不是说,有了RTOS就淘汰了前后台系统。许多小型简单的运用场景都不需要用到RTOS来调度系统的资源,前后台系统可以简单的满足应用。不过在实际的开发应用中,更多时候需要RTOS来调度庞大繁多的任务,来提系统资源的利用率。因此,深入了解掌握RTOS,是一个合格嵌入式开发人员必备的基本能力。

 

posted @ 2017-09-03 23:05  文杰夫斯基  阅读(2468)  评论(0编辑  收藏  举报