`
- 浏览:
4618368 次
- 性别:
- 来自:
武汉
-
在基于tinyos程序设计中,signal和event语句很常见。这两个关键字主要是为了实现分阶段作业的目的。和分阶段作业对应的是阻塞作业,下面举例子说明:
阻塞作业:
if(send()==SUCESS){
sendCount++;
}
分阶段作业:
//调用阶段
send();
//完成阶段
void sendDone(error_t err){
if(err==SUCESS){
SendCount++;
}
}
分阶段调用的一个好处是,当send()操作发出后,系统无需等待,可以转而执行其他的任务(task),这样使得系统资源得以有效的利用,但假设send()函数中的具体实现为:
send(){
int i;
for(i=0;i++;i<10000);
}
这样当send()操作发出后,系统必须执行send()中的内容,系统处于忙碌状态。这时候分阶段作业和阻塞作业是基本没有区别的;如果假设send()函数的具体实现是:
send(){
//DMA控制设置
}
这样当DMA控制命令设置结束后,系统便处于空闲状态,DMA控制器自主完成数据搬移,等到数据搬移结束后,DMA控制器通过中断通知控制器,进而完成sendDone()指令。在这种情况下,分阶段作业确实比阻塞作业有很大优势。
总结一下:基于signal、event关键字的分阶段作业模式主要针对于独立于控制器处理的任务,在执行该任务是不需要控制器直接参与,这样控制器只需要做短暂的任务分配或相关配置,然后进入空闲状态,从而可以处理其他任务;如果用分阶段模式来处理像数据计算这样一直需要控制器全程参与的任务,分阶段作业和阻塞作业效果基本一致。
ps:以上内容为自己推测,并没有基于具体的源代码分析,所以仅供参考。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
TinyOS是UC Berkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计,操作系统基于构件(component-based)的架构使得快速的更新成为可能,而这...TinyOS已被应用于多个平台和感应板中。
1、在TinyOS51系统中_task_关键依然有效,0号任务依然是最高优先级的任务,1号任务次之,依次类推。2、。同时TinyOS51系统弥补了RTX51—Tiny的缺点。首先TinyOS51系统采用占先式任务调度,这样可以最大限度保证系统...
TinyOS+中文手册.pdf TinyOS+中文手册简体中文详细解说
本文档从中间代码入手对 TinyOS 内核进行了简要分析,对于那些接触tinyOS 的人来说,这些是必须的,也是基础性的东西。
tinyos 的中文手册 希望对E文不好的朋友有些用处
1、在TinyOS51系统中_task_关键依然有效,0号任务依然是最高优先级的任务,1号任务次之,依次类推。2、。同时TinyOS51系统弥补了RTX51—Tiny的缺点。首先TinyOS51系统采用占先式任务调度,这样可以最大限度保证系统...
tinyos.sh文件,在linux环境下生成,cygwin环境下可用,tinyos.sh文件总出问题的可以下载,将绝对路径修改成自己的
本PDF密码为tinyos,在资料中详细讲解了TinyOS2.0以上版本在Ubuntu上的安装与测试,更关键的是安装中遇到的问题都有详细的解决方式。
tinyos中关于TOSSIM的系统描述文档
分为7课,翻译过来的,可能有不准确的地方,是tinyos1.x
关于TinyOS的基本安装、使用、编程等等的中文教程
TinyOS入门手册 入门手册 TinyOS TinyOS入门手册
tinyos中文学习资料,包括很详细的代码解释。
关于tinyos的安装,经典程序Blink的讲解以及传感器采集的程序,节点通信程序,tossim仿真等等
tinyos-ubuntu16.04安装tinyos2.1.2
根据tinyos官方网站上下载的tinyos2.1.2版本的发行包,其链接是:http://github.com/tinyos/tinyos-release/archive/tinyos-2_1_2.tar.gz
2015/11/04 00:49 10,466,418 avr-binutils-tinyos_2.17-20080806_i386.deb 2015/11/04 00:49 8,135,462 avr-gcc-tinyos_4.1.2-20080806_i386.deb 2015/11/04 00:49 705,146 avr-libc-tinyos_1.4.7-20080806_i386....
是关于TinyOS中nesC语言的学习整理。