信号量也是资源管理的一种方法
信号量相当于一把锁。锁住共享资源,代码需要获取钥匙才能使用共享资源
只有任务才能使用信号量,ISR不能使用
互斥信号量是解决优先级反转的问题,通过提高任务的优先级,任务时候互斥信号只能提供给一个任务
死锁,就是两个任务互相等待对方所占用的资源的情况
防止死锁:
1、同一个时间不要申请多于一个互斥锁
2、不要直接地申请互斥锁,改申请放到机器间驱动和可重入函数中
3、在处理之前先获得全部所需要的互斥锁
4、任务间以同样的顺序顺序申请资源
5、当申请信号量或互斥锁时,允许设置期限,这样能防止死锁,但是同样的死锁可能稍后再次出现