目前,相当多的嵌入式应用产品都采用了实时多任务操作系统(RTOS,Real Time Operation System)。 实时操作系统(RTOS)是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于RTOS 之上的各个任务,RTOS 根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度及异常处理等工作。
在RTOS 支持的系统中,每个任务均有一个优先级,RTOS 根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。 工程师在编写程序时,可以分别编写各个任务,不必同时将所有任务运行的各种可能情况记在心中。 这样大大减少了程序编写的工作量,而且减少了出错的可能,保证最终程序具有较高可靠性。 实时多任务操作系统,以分时方式运行多个任务,看上去好像是多个任务“同时”运行。 任务之间的切换应当以优先级为根据,通常基于优先级的操作系统有两种:非占先式内核和占先式内核。 只有优先服务方式的RTOS 才是真正的实时操作系统,时间分片方式和协作方式的RTOS 并不是真正的“实时”。 这就要求实时操作系统必须有一个可强占的内核,必须具有可预测性,必须有较短的中断响应延时等特性。 RTOS 也称为实时操作系统(或实时内核)。 由于实时操作系统的以上特点,其内核一般采用的是占先式内核。 下面着重介绍占先式内核。
当系统响应时间很重要时,要使用占先式内核,因此,绝大多数商业销售的实时内核都是占先式内核。 最高优先级的任务一旦就绪,总能得到CPU 的控制权,当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU 使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU 的控制权。 如果是中断服务子程序使一个高优先级的任务进入就绪态,则中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。(www.xing528.com)
使用占先式内核时,应用程序不能直接使用不可重入型函数。 调用不可重入型函数时,要满足互斥条件,这一点可以用互斥型信号量来实现。 如果调用不可重入型函数,低优先级任务的CPU 的使用权就会被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。μC/OS-Ⅱ则属于占先式内核。
RTOS 的使用使得实时应用程序的设计和扩展变得相对容易而且大大简化,不需要大的改动就可以增加新的功能。 使用占先式内核时,所有对时间要求苛刻的事件都得到了尽可能快捷、有效的处理。 通过有效的服务,如信号量、邮箱、队列、延时、超时等,RTOS 使得系统资源得到更好的利用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。