并发和竞态
并发是指多个执行单元程序同时、并行的执行,这时并发的执行单元对一些共享资源如硬件资源、cpu资源、全局变量等的访问就会容易造成竞争使用
并发多发生的环境:
1、SMP多核处理器,系统总线的抢占等
2、单CPU抢占式内核中,进程和抢占它的进程之间,抢占式内核操作系统是实时操作系统:vxworks、ucos
3、中断(硬中断、软中断、tasklet、中断底半部)和进程之间
如何避免发生竞态:
将抢占的资源临界区做一个保护,使得同一时间点只有一个执行单元访问它
方式:
原子操作
互斥锁
自旋锁
信号量
原子操作
原子操作在操作完成之前绝对不对被其他事物所打断的
定义在linux/include/asm-generic/atomic.h