【FreeRTOS】使用指南4:资源管理
本章期望让读者了解以下内容:
为什么,以及在什么时候有必要进行资源管理与控制。
什么是临界区。
互斥是什么意思。
挂起调度器有什么意义。
如何使用互斥量。
如何创建与使用守护任务。
什么是优先级反转,以及优先级继承是如何减小(但不是消除)其影响的。
1. 为什么,以及在什么时候有必要进行资源管理与控制。
多任务系统中存在一种潜在的风险。当一个任务在使用某个资源的过程中,即还没
有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整的状态。
如果这个时候有另一个任务或者中断来访问这个资源,则会导致数据损坏或是其它相似的错误
2. 什么是临界区。
基本临界区是指宏 taskENTER_CRITICAL()与 taskEXIT_CRITICAL()之间的代码区间
临界区是提供互斥功能的一种非常原始的实现方法。临界区的工作仅仅是简单地把中断全部关掉,或是关掉优先级在configMAX_SYSCAL_INTERRUPT_PRIORITY 及以下的中断
3.互斥是什么意思。
访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性。这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态。
说人话就是:一个资源我在用,其他人不能用,有我无他
4.挂起调度器有什么意义。
通过挂起调度器可以创建临界区
由挂起调度器实现的临界区只可以保护一段代码区间不被其它任务打断,因为这种方式下,中断是使能的。
5.如何使用互斥量。
xSemaphoreCreateMutex()//创建互斥量
xSemaphoreTake(