嵌入式学习小组
直播中

郝汉

7年用户 249经验值
私信 关注

为什么UCOS中任务控制块要使用链表来访问

想知道为什么UCOS中任务控制块要使用链表来访问,有什么优势?
链表的优点是不用占用连续的存储空间,但是访问速度慢。但是UCOS在OSInit()使用数组来定义对应任务数的控制块,这已经占用了连续的存储空间,为什么还要用链表连起来。
如果直接给每一个任务固定好任务控制块,即把优先级号作为对应任务的任务控制块数组下标,这样访问起来不是更方便。
呵呵
望大侠指点

回帖(2)

李铭鑫

2019-5-28 10:17:32
方便管理吧,删除,添加,这是很常见的操作啊,固定死了,那就不太好管理了。
举报

陈政竹

2019-5-28 10:23:35
A:如果直接给每一个任务固定好任务控制块,即把优先级号作为对应任务的任务控制块数组下标,这样访问起来不是更方便?
Q:如果用户只定义了两个任务,优先级分别为0和61,那么按照你的说法,以优先级为下标进行分配,那么存放OS_TCB的数组就得分配64(加上空任务和统计任务)个单元,其实仔细想想,按照你的说法,不管用户任务多少个,系统必须总是得定义64个单元,,就算1个用户任务,也得定义64个单元,极其浪费空间。
A:为什么还要用链表连起来?
Q:ucos虽然用数组OS_TCBTbl[]来保存OS_TCB,但是要知道,在管理的时候,这个数组被分成了两部分(一个是空闲的,一个是已被分配的),怎么将一个数组看成两部分?显然用链表极为方便。
欢迎交流 QQ: 2606454510
举报

更多回帖

发帖
×
20
完善资料,
赚取积分