18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 营销百科 > Round Robin作用

Round Robin作用

时间:2023-02-13 16:39:01 | 来源:营销百科

时间:2023-02-13 16:39:01 来源:营销百科

Round Robin作用:RTX51Tiny可以配置成使用round-robin多任务。Round-robin容许quasi-parallel执行多任务。任务并不是连续执行的,而是分时间片执行的(可用的CPU时间被分成时间片,RTX51 Tiny把时间片分配给各个任务)。时间片的时间很短(以毫秒为单位),所以任务看起来像连续执行一样。任务在分配给他的时间片内执行(除非放弃)。然后切换到下一个就绪的任务。这个时间片在RTX51 Tiny Configuration.配置文件中定义.

下面的例子是一个使用round-robin多任务的RTX51Tiny的程序。这个程序中的两个任务都是循环计数器。RTX51 Tiny执行称为job0的任务0。这个函数创建了另一个任务job1。Job0执行完它的时间片后,RTX51 Tiny开始执行job1。Job1执行完它的时间片后,RTX51 Tiny又返回到job0开始执行。然后再切换到job1,如此循环。

#include

int counter0;

int counter1;

void job0 (void) _task_ 0 {

os_create (1); /* mark task 1 as ready */

while (1) { /* loop forever */

counter0 ; /* update the counter */

}

}

void job1 (void) _task_ 1 {

while (1) { /* loop forever */

counter1 ; /* update the counter */

}

}

注意:除了一个任务的时片到时,也可以使用函数os_wait 或函数os_switch_task通知RTX51Tiny可以切换到另一个任务。函数os_wait挂起当前任务直到特定的事件发生。在这期间任何其他的任务都可以执行。

Cooperative 任务切换??如果你禁止了round-robin多任务,你必须设计并执行你的任务从而让他你们以cooperativ方式工作。特别地,你必须在每个任务的某个地方调用。这些函数告知RTX51 Tiny切换到另一任务。

函数os_wait 和函数os_switch_task的不同之处在于os_wait可以让你的任务等待某一事件的发生,而函数os_switch_task直接切换到另一个准务就绪的任务。

空闲任务

当没有任务需要运行时,RTX51Tiny执行空闲任务。空闲任务只是一个简单的无限循环,比如:

SJMP $

有些8051器件提供了空闲模式,通过持起任务的执行以降低功耗,直到出现中断。在这种模式下,所有外围设备包括中断系统仍然在继续工作。

RTX51 Tiny允许你在空闲任务中初始化空闲模式(没有其他任务需要执行)。当RTX51 Tiny时钟节拍中断(或任何其他中断)出现,微控制器恢复执行程序。空闲任务执行的代码可以通过配置文件CONF_TNY.A51进行配置并使能

堆栈管理

RTX51 Tiny在8051的IDATA内存区为每个任务维持一个堆栈。当一个任务执行时,给他准备了最大可能需要地堆栈。当任务切换时,前一个任务的堆栈被压栈并重定位,而把当前任务的堆栈被重定位并弹栈。STACK是堆栈的起始地址。在这个例子中,位于堆栈中的对像包括全局变量,寄存器和位地止内存,剩下的内存用作任务堆栈。内存的顶端在配置文件中定义。

关键词:作用

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭