资源分配机制(Resource Allocation)

在 HRTOS 中,资源分配通过 mutex / scheduler / priority inheritance 实现任务级资源仲裁,而不是简单内存池模拟。

机制定义

Resource Allocation = Mutex Lock + Priority Arbitration + Scheduler Control + Release
所有资源竞争必须进入内核仲裁路径,而不是用户态轮询。

执行流程

1. 任务申请资源(mutex_lock)
2. 内核检查资源状态
3. 发生冲突 → 进入阻塞队列
4. 高优先级继承(priority inheritance)
5. 释放后重新调度

演示代码


#include "hrtos.h"

#define TASK_A 1
#define TASK_B 2
#define MUTEX_ID 0

sbit LED_OK   = P1^0;
sbit LED_FAIL = P1^1;

/* 高优先级任务 */
void task_A(void)
{
    while(1)
    {
        os_mutex_lock(MUTEX_ID);

        /* critical section */
        LED_OK = ~LED_OK;

        os_mutex_unlock(MUTEX_ID);

        os_delay(10);
    }
}

/* 低优先级任务(可能阻塞高优先级资源) */
void task_B(void)
{
    while(1)
    {
        os_mutex_lock(MUTEX_ID);

        os_delay(50);   // 模拟持锁延迟

        LED_FAIL = ~LED_FAIL;

        os_mutex_unlock(MUTEX_ID);
    }
}

void hrtos_main(void)
{
    LED_OK = 0;
    LED_FAIL = 0;

    os_mutex_init(MUTEX_ID);

    os_task_create((unsigned int)task_B, TASK_B, 2, 5);
    os_task_create((unsigned int)task_A, TASK_A, 3, 5);
}

资源模型说明

Mutex保护临界区

保证共享资源不会被并发破坏。

优先级继承

避免低优先级任务阻塞高优先级任务。

调度器介入

资源竞争直接触发任务状态变化。

API 对照(v2)

系统意义

资源分配的核心不在“分配算法”,而在“调度器介入 + 阻塞机制 + 优先级继承”。 这是 RTOS 稳定性的关键基础。