rtos 中对共享资源的保护策略
1. 锁
- 锁对系统的实时性影响最小,当一个线程获得了锁,其他线程再去拿锁,就会导致线程处于休眠态
- 在被锁期间,为避免优先级翻转问题,rtos 中提高持有锁的线程的优先级
- 注意点:不要在中断上下文中试图获取锁
2. 关中断
- 关中断也能够保护共享资源,关中断期间,pendsv 将不会受到相应,因此也就失去了线程切换的能力,保证这一时刻仅有一个线程在执行
- 注意点:频繁关中断极影响系统实时性,因为内核的上下文切换能力都没有了,一旦不能切换或者切换受到影响,系统实时性会降低
3. 关调度器
- 关闭调度器也能够做到对共享资源的保护,调度器关了,自然高优先级的线程不能抢占低优先级线程,也保证了同一时刻仅一个线程访问共享资源
- 注意点:在离开共享资源时,要打开调度器,此时会进行一次线程切换。切勿在调度器钩子函数中关闭调度器,不然会递归执行,导致内存被踩坏,系统异常