【FreeRTOS】07 二值信号量、计数信号量

本节开始讲freeRTOS的信号量,先从最基本的二值信号量讲起,后面会讲解计数信号量,最后是信号量与临界段保护的区别。

1)什么是信号量

信号量是操作系统中用来解决资源共享和进程同步的一种方法。

举两个例子分别说明。

资源共享:假如我们系统里有一个串口,各个任务都要通过它发送数据,这个串口可以看作共享资源;如果不加控制地让任务随意访问串口,那么很可能会产生一个任务发送了一部分的数据时,串口资源被别的任务抢占,发送了新的数据;这样就出现了共享资源出错。我们希望在一个任务访问串口时,其他需要访问串口的任务暂时等待,直到占用串口的任务用完释放了串口资源,再轮到下一个任务访问。

信号量就是用来处理这类问题的,我们可以约定,在访问串口资源前,各任务先去竞争获取信号量,获取到信号量的任务可以访问串口,而其他任务被(信号量)阻塞;等到第一个任务访问完,它会释放信号量,让被阻塞的任务再去竞争,之后也是一样,获取到信号量的任务可以获得串口的使用权。这样我们就通过信号量解决了资源共享的问题。

任务同步:信号量用于任务同步的比较简单,假如多个任务间执行有先后要求,必须任务A完成了事件a,才能执行任务B中的函数b,那么我们可以在事件a之后释放一个信号量,而在b执行之前等待这个信号量,那么就保证了任务A、B中的事件同步执行。

信号量的作用有点像一些全局的标识量,我们也可以用全局变量来实现资源共享和任务同步,只是信号量还带有阻塞任务的功能,在操作系统里使用起来更为方便。

2)二值信号量

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值