事件控制块.ppt

上传人:本田雅阁 文档编号:3178958 上传时间:2019-07-21 格式:PPT 页数:13 大小:374.01KB
返回 下载 相关 举报
事件控制块.ppt_第1页
第1页 / 共13页
事件控制块.ppt_第2页
第2页 / 共13页
事件控制块.ppt_第3页
第3页 / 共13页
事件控制块.ppt_第4页
第4页 / 共13页
事件控制块.ppt_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《事件控制块.ppt》由会员分享,可在线阅读,更多相关《事件控制块.ppt(13页珍藏版)》请在三一文库上搜索。

1、事件控制块,Lzp,事件控制块,UCOS-II把进程间通信机制(邮箱和消息队列)以及同步机制(信号量,Mutex)都看作是“事件”,用一个统一的数据结构:事件控制块来管理,这样简化了代码。 在os_core.c中提供了几个对ECB操作的函数,这些函数为所有的进程间通信和同步机制提供一致的服务 而每个进程间通信和同步机制则在这个ECB的基础上扩展各自的功能;简单的说ECB把对于所有机制共同的东西封装在一起。 系统中所有的空闲ECB连成一个以OSEventFreeList为头的单链表 但是与TCB不同,系统把所有已经分配的TCB也连成个链表(以OSTCBList为头);然而所有已经被分配的ECB并

2、不连成链表,Lzp,事件控制块ECB的定义,Lzp,事件控制块的基本操作,初始化 因为一个事件发生,使一个任务进入就绪态 因为等待一个事件,使任务进入等待状态 因为等待超时而使任务进入就绪态,Lzp,初始化操作,OS_EventWaitListInit()初始化一个空的等待任务列表,即设置.OSEventGrp和.OSEventTbl为0,表示当前没有任务等待这个事件 该函数被OSSemCreate(),OSMutexCreate(),OSMboxCreate(),OSQCreate()调用用来建立一个新的信号量,互斥体,邮箱或者队列,Lzp,Lzp,使一个任务进入就绪态,如果一个任务先前因为

3、等待一个事件而进入waiting状态,则当该事件发生时,应该唤醒这个任务,使其进入就绪状态 由OS_EventTaskRdy()函数实现,Lzp,Lzp,等待事件,OS_EventTaskWait()让一个任务等待某事件的发生,从而使得该任务进入等待状态,Lzp,OS_EventTO(),如果一个任务等待某事件超时了,即该事件在指定的时间deadline前没有发生,则任务将不再继续等待,而是直接进入就绪态 该函数被OSSemPend等函数内部调用,Lzp,OSSemPend()对其的调用,-OSTCBPendTO由OSTimeTick设置,Lzp,Lzp,整体流程-以信号量为例,OSSemPend设置一个timeout,并让一个任务进入等待状态OSSched切换到别的任务运行时钟节拍到来,OSTimeTick不断减小timeout如果timeout被减到0,该事件仍未发生,则OSTimeTick设置任务为就绪态,再做调度如果该任务被调度器选中运行,则回到OSSemPend里面OSSched 后面一条指令在这里调用OSEventTO把该任务从事件的等待任务列表中删除,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1