μC/OS-III比较于μC/OS-II做了许多的改善,是一款全新的内核,在功率方面有了很大进步,并且支撑使命的时刻片轮转调度,摒弃了一些不必要的内容,如音讯邮箱,关于了解μC/OS-II的工程师来说,上手μC/OS-III仍是比较简略的,先来了解一下μC/OS-III做了哪些详细的改善。
一、时钟节拍的改善
在RTOS中,使命可经过调用延时函数(如OSTimeDly( )函数)将自己延时挂起一段时刻,使命在延时的进程中会开释CPU,延时的使命不占用名贵的CPU资源,而是由时钟节拍服务统一办理,时钟节拍服务是一个周期性运转的使命,由周期的时钟节拍中止触发,而时钟节拍中止可由硬件定时器发生,以此来分管CPU的工作量。
在μC/OS-II中,时钟节拍服务是在时钟节拍中止服务程序中完结的,每次时钟节拍服务都会遍历整个使命链表,顺次处理每个使命,假如该使命的延时计数为0,则越过该使命,假如计数非0,则进行减1操作,并判别减1后是否为0,为0则标明延时时刻已到,使相关使命进入安排妥当态。假如体系的使命数目较多的话,时钟节拍服务遍历整个使命链表的时刻较长,并且该服务函数在中止中被调用,因而也会导致中止履行的时刻过长,不符合实时操作体系的规划理念。
在μC/OS-III中,周期性的硬件定时器经过中止触发中止服务函数,在中止服务函数中调用时钟节拍服务函数,可是该时钟节拍服务函数不需要遍历整个使命链表,仅仅发送一个信号量,即可完毕中止,时钟节拍使命接纳该信号量,康复运转,处理延时函数,为了进步时钟节拍的处理速度,还采用了哈希散列表机制来办理使命,使得查找速度愈加高效合理。
二、使命调度的改善
在μC/OS-II中,使命调度是彻底依据优先级的,每个使命都有不同的优先级,不答应2个使命具有相同的优先级,并且支撑的使命数量是有约束的。
在μC/OS-III中,能够支撑恣意数目的使命和优先级,用户依据实际情况来定,当然在实时操作体系中,要尽或许的精简使命数目,在μC/OS-III中,增加了使命的时刻片轮转调度算法,也就是说不同的使命答应具有相同的优先级,因而,使命的数量就能够不受优先级数量的约束了,每一个优先级的使命数量能够有多个,同一优先级的使命依据实际需要分配履行时刻,时刻届时开释CPU,使得其它使命得以履行,如此循环往复。除此之外,还对使命优先级查找算法进行了改善,在此不再胪陈。
三、信号量的改善
在多使命实时操作体系中,信号量是最根本最常用的机制,用来完成使命之间的通讯和同步、使命和中止之间的通讯和同步以及对共享资源的拜访,在μC/OS-II中,供给了根本的信号量创立、等候和开释等操作。
在μC/OS-III中,对信号量的运用增加了一些可选参数,如非堵塞等候、开释但不进行使命调度等操作,具有较高的灵活性。更为便利和重要的是,在μC/OS-III中增加了使命内嵌的信号量,用户无需创立信号量便可和其它使命通讯,运用起来比一般讯号量愈加简略高效。比方两个使命之间的数据传送很清晰,使命A接纳数据完结后,只要使命B来履行数据的处理,也就是说只要一个使命等候使命A的信号量,并且使命A知道要将信号量发送给哪个使命,便能够运用内嵌信号量来进行通讯和同步。
四、小结
以上仅列举了几点在μC/OS-III中比较重要的改善,μC/OS-III实时内核不管在功率、稳定性、用户运用灵活性方面都做了重要的改善,是一款全新的实时内核,详见书本《嵌入式实时操作体系μC/OS-III》。