UCOSIII 移植笔记(一)

这篇博文为本人UCOSIII移植笔记第一篇

先说一下UCOSIII:Micrium在2009年推出了UCOSIII,相对于之前的UCOSII版本,在性能上有了进一步的提升,主要是支持时间片轮调度,极短的关中断事件等。

可剥夺多任务管理:
什么是可剥夺多任务管理呢?查相关资料,意思就是这个系统总是在执行当前所有就绪的最高优先级的任务。也就是说,不管系统当前有多少个任务,总是在执行优先级最高的。
Micrium在2009年推出了UCOSIII,相对于之前的UCOSII版本,在性能上有了进一步的提升,主要是支持时间片轮调度,极短的关中断事件等。

同优先级任务的时间片轮转调度:
这个是UCOSIII与UCOSII一个比较大的区别,UCOSIII允许一个任务优先级被多个任务使用,当这个优先级处于最高就绪的时候,UCOSIII就会轮流调度处于这个优先级的所有任务,让每个任务运行一段由用户指定的时间长度(时间片)。

极短的关中断时间:
UCOSIII可采用锁定内核调度的方式而不是关中断的方式来保护临界代码段,这样就可以将关中断的时间降到最低,使得UCOSIII能够非常快速的响应中断请求。

任务数目不受限制:
UCOSIII本身没有任务数量的限制,但是受CPU所使用的内存空间的限制。

优先级数量不受限制:
支持无限多的任务优先级。

软件定时器:
用户可以任意定义“单次”和“周期型”定时器,定时器是一个递减计数器,递减到0就会执行预先定义的操作,每个定时器都可以指定所需的操作,周期型定时器在递减到0时不仅会执行预先指定的操作,还会自动重置计数器值。

同时等待多个内核对象:
UCOSIII允许一个任务同时等待多个事件,也就是说,一个任务能够挂起在多个信号量或消息列队之上,当其中任务一个等待的事件发生时,等待任务就会被唤醒。

直接向任务发送信号:
UCOSIII允许中断或者任务直接级另一个任务发送信号,避免创建和使用诸如信号量或事件标志等内核对象作为向其它任务发送信号的中介,该特性有效的提高了系统性能。

任务寄存器:
每个任务都可以设定若干个任务寄存器,任务寄存器和硬件CPU的寄存器是不同的,主要用来保护各个任务的错误信息,ID识别信息,中断关闭时间的测量结果等等。

任务级时钟节拍处理:
UCOSIII的时钟节拍是通过一个专门的任务完成的,定时中断仅触发该任务,将延迟处理和超时判断放在任务级代码完成,能极大的减少中断的延时时间。、

防止死锁:
所有UCOSIII等待功能,都提供了一超时检测功能,有效的避免了死锁。

时间戳:
UCOSIII需要一个16位的或者32位的自由运行计数器,来实现时间测量,在系统运行时,可以通过读取该计数器来测量某一个事件的时间信息。

猜你喜欢

转载自blog.csdn.net/s18714804418/article/details/81872733