FreeRTOS详解---任务管理

 

<一>TCB链接:

FreeRTOS详解---任务管理_第1张图片

 

<二>Tick中断处理过程:

FreeRTOS详解---任务管理_第2张图片  

<三>pendsv中断处理过程:

pendsv中断处理程序主要处理context switch,目前freertos的切换策略是在ready list选择优先级最高的task运行

FreeRTOS详解---任务管理_第3张图片

任务调度算法:

#define taskSELECT_HIGHEST_PRIORITY_TASK()                                                            \ 
{                                                                                                    \ 
    /* Find the highest priority queue that contains ready tasks. */                                \ 
    while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopReadyPriority ] ) ) )                        \ 
    {                                                                                                \ 
        configASSERT( uxTopReadyPriority );                                                            \ 
        --uxTopReadyPriority;                                                                        \ 
    }                                                                                                \ 
                                                                                                    \ 
    /* listGET_OWNER_OF_NEXT_ENTRY indexes through the list, so the tasks of                        \ 
    the    same priority get an equal share of the processor time. */                                    \ 
    listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopReadyPriority ] ) );        \ 
} /* taskSELECT_HIGHEST_PRIORITY_TASK */

 

<四>任务状态转换

FreeRTOS详解---任务管理_第4张图片

你可能感兴趣的:(FreeRTOS详解---任务管理)