-1 c embedded operating-system freertos
最近我一直在为ARM和PIC设备开发自己的RTOS,所以我正在分析当前的RTOS概念.我在学习FreeRTOS时有些疑惑,
它如何处理函数变量?我们如何管理函数内的变量?
例1:
我们在FreeRTOS中的函数A和B的两个线程中声明了一个局部变量'i',但是函数A的变量'i'受函数B的影响.
EX-2:
我们有两个线程A,B和一个像延迟的函数.但是线程A和B都调用相同的函数delay.FreeRTOS如何为两个线程(A和B)分配单个延迟资源?
在函数中声明的变量放在堆栈上.线程具有不同的堆栈,因此函数局部变量对它们是不同的.
这是第二个问题的答案.因为delay,OS必须为每个线程创建数据结构.例如,delay参数将具有延迟的增量.具有最小delta的线程被唤醒; 但是第一次运行时会设置第二个线程的定时器中断.如果第二个线程具有更高的优先级,则在中断时唤醒(如果不是,则将其置于就绪状态).堆栈和延迟状态由列表或其他数据结构中的每个任务的OS全局管理.
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |