【FreeRTOS】使用指南4:资源管理

【FreeRTOS】使用指南4:资源管理

本章期望让读者了解以下内容:
 为什么,以及在什么时候有必要进行资源管理与控制。
 什么是临界区。
 互斥是什么意思。
 挂起调度器有什么意义。
 如何使用互斥量。
 如何创建与使用守护任务。
 什么是优先级反转,以及优先级继承是如何减小(但不是消除)其影响的。

1. 为什么,以及在什么时候有必要进行资源管理与控制。

多任务系统中存在一种潜在的风险。当一个任务在使用某个资源的过程中,即还没
有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整的状态。
如果这个时候有另一个任务或者中断来访问这个资源,则会导致数据损坏或是其它相似的错误

2. 什么是临界区。

基本临界区是指宏 taskENTER_CRITICAL()与 taskEXIT_CRITICAL()之间的代码区间
临界区是提供互斥功能的一种非常原始的实现方法。临界区的工作仅仅是简单地把中断全部关掉,或是关掉优先级在configMAX_SYSCAL_INTERRUPT_PRIORITY 及以下的中断

3.互斥是什么意思。

访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性。这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态。
说人话就是:一个资源我在用,其他人不能用,有我无他

4.挂起调度器有什么意义。

通过挂起调度器可以创建临界区
由挂起调度器实现的临界区只可以保护一段代码区间不被其它任务打断,因为这种方式下,中断是使能的。

5.如何使用互斥量。

xSemaphoreCreateMutex()//创建互斥量
xSemaphoreTake()/试图获得互斥量
xSemaphoreGive()//归还信号量

6.如何创建与使用守护任务。

原文创建方式:

xTaskCreate( prvStdioGatekeeperTask, "Gatekeeper", 1000, NULL, 0, NULL );

这块在使用手册上没找到很好的说明,参考下GPT的回答:
FreeRTOS是一个开源的实时操作系统内核,它提供了一套用于创建和管理任务的API。在FreeRTOS中,守护任务(daemon task)是一种特殊类型的任务,它在系统启动时创建,并且一直运行,不会被其他任务删除或挂起。
要创建和使用守护任务,可以按照以下步骤进行操作:
1.在FreeRTOS配置文件中启用守护任务支持。打开FreeRTOS配置文件(通常是FreeRTOSConfig.h),找到以下配置项并确保其值为1:

#define configUSE_DAEMON_TASK_STARTUP_HOOK 1

2.实现守护任务的启动函数。在应用程序中定义一个函数,作为守护任务的入口点。该函数将在系统启动时自动调用。例如:

Cvoid vApplicationDaemonTaskStartupHook(void)
{
    // 守护任务的初始化和逻辑代码
}

3.在应用程序中创建守护任务。在主函数或其他任务中调用
xTaskCreate()函数来创建守护任务。守护任务的优先级通常设置为最低优先级(0),以确保其他任务能够正常运行。例如:

CxTaskCreate(vApplicationDaemonTaskStartupHook, "DaemonTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);

4.编译和运行应用程序。当系统启动时,守护任务将被创建并开始运行。
需要注意的是,守护任务通常用于执行一些系统级的初始化或后台任务,例如系统监控、资源管理等。它应该是一个低优先级的任务,不应该占用过多的处理器时间,以免影响其他任务的运行

7.什么是优先级反转,以及优先级继承是如何减小(但不是消除)其影响的。

优先级反转是采用互斥量提供互斥功能的潜在缺陷之一。
低优先级任务比高优先级任务早一步获取到互斥量,导致高优先级的任务必须等待低优先级任务 放弃对互斥量的持有权。
高优先级任务被低优先级任务阻塞推迟的行为被称为”优先级反转”。
这是一种不合理的行为方式,如果把这种行为再进一步放大,当高优先级任务正等待信号量的时候,一个介于两个任务优先之间的中等优先级任务开始执行——这就会导致一个高优先级任务在等待一个低优先级任务,而低优先级任务却无法执行!

优先级继承:是暂时地将互斥量持有者的优先级提升至所有等待此互斥量的任务所具有的最高优先级。持有互斥量的低优先级任务”继承”了等待互斥量的任务的优先级。互斥量持有者在归还互斥量时,优先级会自动设置为其原来的优先级。
在这里插入图片描述

优先级继承是最小化优先级反转负面影响的一种方案
——其并不能修正优先级反转带来的问题,仅仅是减小优先级反转的影响。

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值