基于μC/OS-II操作系统的任务调度机制(2)
作者:佚名; 更新时间:2014-12-05
μC/OS-II操作系统是一个商业用的实时操作系统。这是因为它是可剥夺型内核。可剥夺型内核是指当有高优先级任务到来时,不用等待低优先级的任务执行完毕,可以直接切换到高优先级的任务执行,即高优先级任务可以剥夺低优先级任务的CPU的使用权。μC/OS-II操作系统是一个多任务的实时操作系统。对于多任务的调度,它主要通过以下四类方法的使用来完成。
3.1优先级
对于μC/OS-II操作系统定义的每一个任务,在创建任务之初,一定会给这个任务分配一个合适的优先级。如果一个操作系统在调度算法选择上只是基于优先级调度,即支持静态优先级,那么这个操作系统只是一个准实时操作系统。而在μC/OS-II操作系统中,任务的优先级是可变的,即支持动态优先级。因此μC/OS-II操作系统是一个实时操作系统。改变任务优先级的函数是OSTaskChangePrio()。
3.2互斥信号量与信号量
在μC/OS-II操作系统中,互斥信号量被定义为一个二值信号,可以实现对共享资源的独占式占用。当这个资源被一个任务占用时,就被定义为1。其他的需要这个资源的任务如果检查到互斥型信号量是1,则进入等待状态,当占用此资源的任务释放这个资源时,互斥型信号量则被置为0,此时等待这个资源的任务队列中优先级最高的任务则可以获得这个资源而得以执行。
在μC/OS-II操作系统中,信号量有两种用法:一种是执行与互斥信号量相同的功能。二是如果一个资源允许多个任务调用,但现在要调用此资源的任务数目却多于允许使用此资源的数目,此时就需要用到信号量。这种情况下就会为资源设置一个计数器,如果被一个任务调用一次就自动减一,被一个任务释放一次就自动加一,只要这个计数器是大于零的,其他的任务就可以调用这个资源。
3.3消息邮箱和消息队列
用来传递消息缓冲区指针的数据结构叫做消息邮箱。消息邮箱所传递的是指向消息的指针,并非消息本身。如果一个任务获得了这个指针,即获得了该指针指向的一个特定数据结构。
消息邮箱不仅用来传递一个消息,而且也可定义一个指针数组,让数组的每个元素都存放一个消息缓冲区指针。那么任务就可通过这个指针数组指针的方法来传递多个消息。这种可以传递多个消息的数据结构叫做消息队列。
消息邮箱和消息队列在功能上的不同点是邮箱中只能存放一则消息指针,而队列可以存放多则消息指针。
3.4事件标志组
当某个任务需要与多个任务同步时,必须要使用事件标志组。事件标志组一旦建立之后,只有当某个任务需要事件标志组中的某些事件标志位(置位或者清0),这个任务才能继续运行。而且几个任务可以同时得到所需要的事件标志而进入就绪态。因此只要任务所需要的标志位满足要求,任务便可以进入就绪态。而使用信号量的任务是在等待该信号量的任务中优先级最高的任务才能得到信号量进入就绪态。
事件标志组可以使一个任务与多个任务同步,而信号量只能使一个任务与另一个任务同步。这是事件标志组与信号量的不同之处。
4 结论
本文在理论上对μC/OS-II操作系统的任务调度原理及方法进行了详细的研究,了解了μC/OS-II操作系统所定义的任务状态,找到了整个状态循环过程中的出口和入口,并分析了此操作系统是如何运用优先级、信号量等一些方法进行任务的调度。在研究的同时,也使得我们了解了μC/OS-II操作系统不同于其他一些操作系统的地方。正是由于这些不同点,使得μC/OS-II操作系统在短短十多年的时间里迅速发展起来并得到了广泛的应用。
参考文献:
[1]季志均,马文丽,陈虎,郑文岭.四种嵌入式实时操作系统关键技术分析[J].计算机应用研究,2005,(9):4-8.
[2]张文学.两种嵌入式实时操作系统的分析和比较[J].移动通信,2003.
[3]Jean J. Labrosse. 邵贝贝.等.μC/OS2Ⅱ源码公开的实时嵌入式操作系统(第2 版)[M].北京:北京航空航天大学出版社,2003.
[4]任哲.嵌入式实时操作系统μC/OS-II原理及应用[M].北京: 北京航空航天大学出版社,2005.
[5]涂刚,阳富民,胡贯荣。嵌入式操作系统综述[J].计算机应用研究,2000,(11):4-9.
下一篇:谈论企业信息化建设
热门论文