嵌入式操作系统FreeRTOS的原理与实现

技术分类: 嵌入式系统  | 2006-06-14
来源:电子产品世界

       以图1为例,设系统的最大任务数为pottMAX_PRIORITIES,在某一时刻进行任务调度时,得到pxReadyTasksLists[i].usNumberOfItems=O(i=2...portMAX_PRIORITIES)以及pxReadyTasksLists[1]。usNumberOfItems=3。由此内核可知当前最高就绪优先级为l,且此优先级下已有三个任务已进入就绪态.由于最高就绪优先级下有多个就绪任务,系统需执行轮换调度算法实现任务切换;通过指针pxlndex可知任务l为当前任务,而任务l的pxNext结点指向任务2,因此系统把pxIndex指向任务2并执行任务2来实现任务调度。当下一个时钟节拍到来时,若最高就绪优先级仍为1,由图可见,系统会把pxIndex指向任务3并执行任务3。  

任务调度示意

点击看原图


       为了加快任务调度的速度,FrecRTOS通过变量ucTopReadyPriotity跟踪当前就绪的最高优先级。当把一个任务加入就绪链表时,如果此任务的优先级高于ucTopReadyPriority,则把这个任务的优先级赋予ucTopReadyPriority。这样当进行优先级调度时,调度算法不是从portMAX_PRIORIT
IES而是从ucTopReady-Priority开始搜索。这就加快了搜索的速度,同时缩短了内核关断时间。

       2.2 任务管理的实现

      
实现多个任务的有效管理是操作系统的主要功能。FreeRTOS下可实现创建任务、删除任务、挂起任务、恢复任务、设定任务优先级、获得任务相关信息等功能。下面主要讨论FreeRTOS下任务创建和任务删除的实现。当调用sTaskCreate()函数创建一个新的任务时,FreeRTOS首先为新任务分配所需的内存。若内存分配成功,则初始化任务控制块的任务名称、堆栈深度和任务优先级,然后根据堆栈的增长方向初始化任务控制块的堆栈。接着,FreeRTOS把当前创建的任务加入到就绪任务链表。若当前此任务的优先级为最高,则把此优先级赋值给变量ucTopReadyPriorlty(其作用见2.1节)。若任务调度程序已经运行且当前创建的任务优先级为最高,则进行任务切换。

       不同于μC/OS—II,FreeRTOS下任务删除分两步进行。当用户调用vTaskDelete()函数后,执行任务删除的第一步:FreeRTOS先把要删除的任务从就绪任务链表和事件等待链表中删除,然后把此任务添加到任务删除链表,若删除的任务是当前运行任务,系统就执行任务调度函数,至此完成任务删除的第一步。当系统空闲任务即prvldleTask()函数运行时,若发现任务删除链表中有等待删除的任务,则进行任务删除的第二步,即释放该任务占用的内存空间,并把该任务从任务删除链表中删除,这样才彻底删除了这个任务。值得注意的是,在FreeRTOS中,当系统被配置为不可剥夺内核时,空闲任务还有实现各个任务切换的功能。

       通过比较μC/OS-II和FreeRTOS的具体代码发现,采用两步删除的策略有利于减少内核关断时间,减少任务删除函数的执行时间,尤其是当删除多个任务的时候。

       2.3 时间管理的实现

      
FreeRTOS提供的典型时间管理函数是vTaskDelay(),调用此函数可以实现将任务延时一段特定时间的功能。在FreeRT0S中,若一个任务要延时xTicksToDelay个时钟节拍,系统内核会把当前系统已运行的时钟节拍总数(定义为xTickCount,32位长度)加上xTicksToDelay得到任务下次唤醒时的时钟节拍数xTimeToWake。然后,内核把此任务的任务控制块从就绪链表中删除,把xTimeToWake作为结点值赋予任务的xItemValue,再根据xTimeToWake的值把任务控制块按照顺序插入不同的链表。若xTimeToWake > xTickCount,即计算中没有出现溢出,内核把任务控制块插入到pxDelayedTaskList链表;若xTimeToWak e< xTickCount,即在计算过程中出现溢出,内核把任务控制块插入到pxOverflowDelayed-Taskust链表。

0
0
(请您对文章做出评价)
1】【2】【3】【4
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

正在点播中:电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会