资源分配机制(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 稳定性的关键基础。