并发和竞态
并发:多个执行单元同时,并行的被执行。
竞态:并发的执行单元对共享资源(硬件资源和软件上的全局变量,静态变量等)的访问导致发生竞态。
竟态的几种情况:
1.对称多处理器(SMP)的多个CPU
SMP:紧耦合,共享存储的系统模型。如下图所示。
其特点是多个CPU使用共同的系统总线,因此可访问共同的外设和储存器。
有SMP的情况下两个核的竞态可能发生于两CPU的进程与进程之间,进程与中断之间,中断与中断之间。
2.单CPU内进程与抢占它的进程
在Linux2.6以后的内核支持内核抢占调度。
情况类似于SMP的多个CPU。
3.中断(硬中断,软中断,Tasklet,底半部)与进程之间
中断服务程序访问进程正在访问的资源会发生竟态。
多个中断之间本身也可能引起并发。但在Linux 2.6.35之后就取消了中断的嵌套。
上述并发的发生除了SMP是真正的并行之外其他都是单核上的”宏观并行微观串行”。
但引发的实质问题和SMP相似。
解决竟态问题的途径是保证对共享资源的互斥访问。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!