FreeRTOS操作系统知识点
时间: 2024-12-31 11:45:47 浏览: 9
### FreeRTOS 操作系统基础知识
#### 任务管理
FreeRTOS 支持多任务处理,允许开发者创建多个独立的任务来执行不同的功能。每个任务都有自己的堆栈空间和上下文环境。
- **任务状态**
任务可以处于五种不同状态之一:运行态、就绪态、阻塞态、挂起态以及删除态[^3]。当一个任务正在 CPU 上执行时,则该任务处于运行态;如果它准备好了并等待 CPU 时间片分配给它,则它是就绪态;而一旦某个事件未发生使得任务无法继续前进(比如等待信号量),那么这个任务就会进入阻塞态或挂起态直到条件满足为止。
- **任务优先级**
不同的任务可以根据其重要性和紧急程度被赋予不同的优先级别,在资源竞争情况下高优先生存者会获得更多的机会去占用处理器资源完成工作。
- **任务实现**
创建新线程非常简单直观:
```c
void vTaskFunction(void *pvParameters){
// Task code here...
}
int main(){
xTaskCreate(vTaskFunction, "TASK_NAME", STACK_SIZE, NULL, PRIORITY_LEVEL, &taskHandle);
vTaskStartScheduler();
}
```
- **任务控制块 (TCB)**
TCB 是用来保存有关特定任务的信息结构体,包括但不限于指针指向当前使用的堆栈顶部位置、下一个要被执行指令地址等等。
#### 配置选项
`FreeRTOSConfig.h` 文件包含了大量用于定制内核行为的定义语句。通过调整这些参数能够优化性能表现以适应具体应用场景需求。
- `INCLUDE_*` 开头宏
这些宏决定了哪些 API 函数会被编译进来供应用程序调用使用。例如 `configUSE_PREEMPTION` 控制着是否开启抢占模式调度算法支持。
#### 中断与调度策略
为了提高效率并确保及时响应外部输入变化情况,FreeRTOS 提供了几种常见的进程切换机制:
- 抢占式调度
当前活动中的低优先权作业会在更高层次别的其他请求到来之后立即停止让位给后者执行。
- 时间片轮转法
将整个可用时间段划分成若干个小片段轮流分发给各个待命队列里的成员依次享有计算权利直至结束或者超时重选下一轮次参与者名单。
- 协作型方案
所有参与协作的工作单元都必须主动放弃CPU使用权才能触发新一轮的选择过程从而达到公平共享目的。
阅读全文