问两个简单ucos问题?谢谢!

系统初始化中1:OSTCBTbl[]就表示实际的任务的TCB吗2:ptcb1=&OSTCBTbl[0];//我认为是ptcb1指向第一个TCB的OSTCBStkPtr指针... 系统初始化中
1:OSTCBTbl[]就表示实际的任务的TCB吗
2: ptcb1 = &OSTCBTbl[0]; //我认为是ptcb1指向第一个TCB的OSTCBStkPtr指针
ptcb2 = &OSTCBTbl[1];/我认为是ptcb2指向第二个TCB的OSTCBStkPtr指针
上面的描述对吗?为什么?为什么只用两个指针来指向
for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {
ptcb1->OSTCBNext = ptcb2;//ptcb1->OSTCBNext 指向ptcb2指向的第二个TCB的OSTCBStkPtr指针,对吗?
ptcb1++; //这句话有什么用?
ptcb2++; //这句话有什么用?
}
ptcb1->OSTCBNext = (OS_TCB *)0;
OSTCBFreeList = &OSTCBTbl[0];//OSTCBFreeList指向第一个TCB的OSTCBStkPtr指针,这样说法对吗?

问题2中的几句话有什么用,为何要这样初始化?谢谢了
展开
 我来答
liehuoyaoche
2011-08-13
知道答主
回答量:22
采纳率:0%
帮助的人:9.1万
展开全部
问题一:OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS]; 是一个数组(全局变量);每个数组元素包含一个任务控制块(是结构体);每个任务控制块没被任务占用时,就是空闲控制块,可以被新任务占用,任务控制块被占用时,就储存任务的信息和属性。所以被占用的OSTCBTbl[x]就是实际的任务的TCB。

问题二:你看的这段代码是初始化空闲任务控制块链表用的。每个TCB结构体中有2个指针(os_tcb *OSTCBNext; os_tcb *OSTCBPrev;),这段代码就是让OS_MAX_TASKS + OS_N_SYS_TASKS个任务控制块通过指针串成一个双链表,便于空闲任务控制块的管理。
ptcb1,ptcb2是两个局部变量指针,就是为使任务控制块通过指针串成一个双链表而定义的;
OSTCBFreeList 指向任务控制块链表的第一个TCB。你看一下数据结构中的双链表,就发现这段代码很容易理解。
我是圆木 1025167394
ch314156
2011-08-13 · TA获得超过4377个赞
知道小有建树答主
回答量:2036
采纳率:100%
帮助的人:1022万
展开全部
1. 是
2.用指针可以遍历整个链表,不用指针你如何操作每个节点?两个指针 是因为需要交换,1个不够,你把C语言的链表复习一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式