Scheduling Core

时间片轮转演示(Round Robin)

时间片轮转用于验证同优先级任务的公平调度机制。 在相同优先级下,通过Tick驱动实现任务轮流执行。

机制定义

Round Robin = 同优先级Ready队列 + 时间片计数 + Tick触发调度 + os_switch切换

相关API(API_V2): os_switch · os_dispatch_id · os_delay · os_tick_get

调度特性

同优先级任务队列

多个任务进入同一Ready链表。

时间片轮转执行

每个任务占用固定时间片运行。

Tick驱动切换

系统Tick触发调度器重新选择任务。

公平调度模型

所有任务平均获得CPU时间。

RR链路:Ready Queue → Time Slice → Tick Interrupt → os_dispatch_id → os_switch → Next Task

执行流程

任务创建

三个同优先级任务进入系统。

调度启动

系统进入Round Robin模式。

时间片运行

每个任务按Tick轮流执行。

持续循环

任务不断在CPU之间切换。

演示代码


#include "hrtos.h"

sbit LED_A = P1^0;
sbit LED_B = P1^1;
sbit LED_C = P1^2;

void task_a(void)
{
    while(1)
    {
        LED_A = ~LED_A;
        os_task_yield();
    }
}

void task_b(void)
{
    while(1)
    {
        LED_B = ~LED_B;
        os_task_yield();
    }
}

void task_c(void)
{
    while(1)
    {
        LED_C = ~LED_C;
        os_task_yield();
    }
}

void hrtos_main(void)
{
    LED_A = LED_B = LED_C = 0;

    os_task_create((unsigned int)task_a, 1, 1, 5);
    os_task_create((unsigned int)task_b, 2, 1, 5);
    os_task_create((unsigned int)task_c, 3, 1, 5);
}

系统意义

时间片轮转解决同优先级任务饥饿问题,实现CPU资源公平分配与稳定响应。

内核机制: os_switch · Round Robin · Scheduling Flow

相关导航

Task Execution

进入

Scheduling Engine

进入

Interrupt Flow

进入

Task Lifecycle

进入