微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > μC/OS-II在80x86上的移植

μC/OS-II在80x86上的移植

时间:10-08 来源:互联网 点击:

最大运行时间是当63个任务(空闲进程不会延时等待)都处于延时状态,此时OSTickISR()需要逐个检查等待中的任务,将计数器减1,并判断是否延时结束。这种情况对于系统是一个很重的负荷。例如在最坏的情况,设时钟节拍间隔10ms,OSTickISR()需要625μs,占了约6%的CPU利用率。但请注意,此时所有的任务都没有执行,只是内核的开销。

OSMboxPend()

最小运行时间是当邮箱中有消息需要处理的时候。

最大运行时间是当邮箱中没有消息,任务需要等待的时候。此时调用OSMboxPend()的任务将被挂起,进行任务切换。最大运行时间是同一任务执行OSMboxPend()的累计时间,这个过程包括OSMboxPend()查看邮箱,发现没有消息,再调用任务切换函数OSSched(),切换到新任务。当由于某种原因调用OSMboxPend()的任务又被唤醒执行,从OSSched()中返回,发现返回的原因是由于延时结束(处理延时结束情况的代码最长—译者注),最后返回调用任务。OSMboxPend()的最大运行时间是上述时间的总和。

OSMboxPost()

最小运行时间是当邮箱是空的,没有任务等待消息的时候。

最大运行时间是当消息邮箱中有一个或多个任务在等待消息。此时,消息将发往等待队列中优先级最高的任务,将此任务唤醒执行。最大运行时间是同一任务执行OSMboxPost()的累计时间,这个过程包括任务唤醒等待任务,发送消息,调用任务切换函数OSSched(),切换到新任务。当由于某种原因调用OSMboxPost()的任务又被唤醒执行,从OSSched()中返回,发现返回的原因是由于延时结束(处理延时结束情况的代码最长—译者注),最后返回调用任务。OSMboxPost()的最大运行时间是上述时间的总和。

OSMemGet()

最小运行时间是当系统中已经没有内存块,OSMemGet()返回错误码。

最大运行时间是OSMemGet()获得了内存块,返回调用者。

OSMemPut()

最小运行时间是当向一个已经排满的内存分区中返回内存块。

最大运行时间是当向一个未排满的内存分区中返回内存块

OSQPend()

最小运行时间是当消息队列中有消息需要处理的时候。

最大运行时间是当消息队列中没有消息,任务需要等待的时候。此时调用OSQPend()的任务将被挂起,进行任务切换。最大运行时间是同一任务执行OSQPend()的累计时间,这个过程包括OSQPend()查看消息队列,发现没有消息,再调用任务切换函数OSSched(),切换到新任务。当由于某种原因调用OSQPend()的任务又被唤醒执行,从OSSched()中返回,发现返回的原因是由于延时结束(处理延时结束情况的代码最长—译者注),最后返回调用任务。OSQ`Pend()的最大运行时间是上述时间的总和。

OSQPost()

最小运行时间是当消息队列是空的,没有任务等待消息的时候。

最大运行时间是当消息队列中有一个或多个任务在等待消息。此时,消息将发往等待队列中优先级最高的任务,将此任务唤醒执行。最大运行时间是同一任务执行OSQPost()的累计时间,这个过程包括任务唤醒等待任务,发送消息,调用任务切换函数OSSched(),切换到新任务。当由于某种原因调用OSQPost()的任务又被唤醒执行,从OSSched()中返回,发现返回的原因是由于延时结束(处理延时结束情况的代码最长—译者注),最后返回调用任务。OSQPost()的最大运行时间是上述时间的总和。

OSQPostFront()

此函数与OSQPost()的过程相同。

OSSemPend()

最小运行时间是当信号量可获取的时候(信号量计数器大于0)。

最大运行时间是当信号量不可得,任务需要等待的时候。此时调用OSSemPend()的任务将被挂起,进行任务切换。最大运行时间是同一任务执行OSQPend()的累计时间,这个过程包括OSSemPend()查看信号量计数器,发现是0,再调用任务切换函数OSSched(),切换到新任务。当由于某种原因调用OSSemPend()的任务又被唤醒执行,从OSSched()中返回,发现返回的原因是由于延时结束(处理延时结束情况的代码最长—译者注),最后返回调用任务。OSSemPend()的最大运行时间是上述时间的总和。

OSSemPost()

最小运行时间是当没有任务在等待信号量的时候。

最大运行时间是当有一个或多个任务在等待信号量。此时,等待队列中优先级最高的任务将被唤醒执行。最大运行时间是同一任务执行OSSemPost()的累计时间,这个过程包括任务唤醒等待任务,调用任务切换函数OSSched(),切换到新任务。当由于某种原因调用OSSemPost()的任务又被唤醒执行,从OSSched()中返回,发现返回的原因是由于延时结束(处理延时结束情况的代码最长—译者注),最后返回调用任务。OSSemPost()的最大运行时间是上述时间的总和。

OS

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top