推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

实验07_计数型信号量_资源管理.docx

资料介绍

实验 07:计数型信号量 — 资源管理

实验说明

实验概述

计数型信号量是 FreeRTOS 中用于管理有限数量共享资源的核心机制。与二值信号量只有 0 和 1 两种状态不同,计数型信号量维护一个计数器,其值可以在 0 到最大值之间变化。这使得它非常适合管理资源池场景,例如多个相同的 DMA 通道、缓冲区块、通信端口等。本实验模拟一个包含 5 个缓冲区的资源池,8 个任务竞争使用这些资源,直观展示计数型信号量的资源管理能力。

实验原理

计数型信号量的底层实现是一个长度大于 1 的队列,队列中的每个元素不存储实际数据,仅代表一个可用资源。创建时需指定最大计数值(uxMaxCount)和初始计数值(uxInitialCount)。当初始值等于最大值时,表示所有资源一开始都可用。任务通过 xSemaphoreTake() 获取资源(计数值减 1),通过 xSemaphoreGive() 释放资源(计数值加 1)。当计数值为 0 时,尝试获取资源的任务将进入阻塞状态,直到有其他任务释放资源。

关键知识点

1. xSemaphoreCreateCounting(max, initial) 创建计数型信号量。

2. uxSemaphoreGetCount() 查询当前可用资源数量。

3. 计数型信号量适合管理同类资源,每个资源无差异。

实验现象

8 个任务同时竞争 5 个资源,最多 5 个任务同时获取到资源,其余 3 个任务阻塞等待。当某个任务释放资源后,等待队列中的下一个任务立即获取到资源。

完整代码


部分文件列表

文件名 大小
实验07_计数型信号量_资源管理.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单
  • 21下载积分 打赏60.00元   3天前

    用户:gsy幸运

  • 21下载积分 打赏70.00元   3天前

    用户:铁蛋锅

  • 21下载积分 打赏65.00元   3天前

    用户:xzxbybd

  • 21下载积分 打赏60.00元   3天前

    用户:jh0355

  • 21下载积分 打赏60.00元   3天前

    用户:w178191520

  • 21下载积分 打赏20.00元   3天前

    用户:jh03551

  • 21下载积分 打赏20.00元   3天前

    用户:sun2152

  • 21下载积分 打赏20.00元   3天前

    用户:kk1957135547

  • 21下载积分 打赏25.00元   3天前

    用户:w1966891335

  • 21下载积分 打赏20.00元   3天前

    用户:xuzhen1

  • 21下载积分 打赏15.00元   3天前

    用户:x15580286248

  • 21下载积分 打赏25.00元   3天前

    用户:pcb

  • 21下载积分 打赏20.00元   3天前

    用户:bhacker

  • 21下载积分 打赏15.00元   3天前

    用户:liqiang9090

  • 21下载积分 打赏25.00元   3天前

    用户:有理想666

  • 21下载积分 打赏15.00元   3天前

    用户:godbox

  • 21下载积分 打赏15.00元   3天前

    用户:aetek

  • 21下载积分 打赏5.00元   3天前

    用户:mulanhk

  • 21下载积分 打赏5.00元   3天前

    用户:JuneLin61

推荐下载