文章目录
1 场景
假设地铁上有一个空座位(在大深圳就没见过),路人甲、乙、丙上车都有同等机率获得座位,但是最终只有一个人能够获得。“座位”就是共享资源,甲乙丙就是并发“访问”的“共享资源”的对象。事实上,即使只有一个座位,哪怕有更多人上车也不会引发“冲突”(竞态),因为大家潜意识里,获得座位的机制是“先到先得”或者“礼让”。
类似的,linux系统中提供了完整的并发保护机制,避免竞态现象。
2 并发与竞态
并发(concurrency)指的是多个执行单元在宏观上同时被执行,从宏观角度看起来就像是并行执行的。竞态(race conditions)则是由并发引的对共享资源(包括软件资源和硬件资源)同时访问引起的一种现象。
2.1 并发带来的影响
并发访问直接引入的问题就是资源竞争。linux系统是一个多用户、多任务的操作系统,存在多个任务同时访问共享资源的情况,共享资源可以是内存、设备驱动、外设,多任务同时访问可能导致内存数据混乱,文件描述符重复操作,甚至可能引发进程和系统崩溃。