并发与竞争
并发 是指多个执行单元同时、并发被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致 竞争 。
如果在访问共享资源时不独占该共享资源,可能会造成资源异常(如变量值混乱、设备出错或内存块内容不是期望值等),进而导致程序运行异常甚至崩溃。
SylixOS 支持 SMP 与 内核抢占 ,在此环境下更是充满了并发与竞争。
在 SylixOS 中,可能导致并发与竞争的情况有:
- 对称多处理器(SMP)。SMP 是一种紧耦合、共享存储的系统模型,特点是多个 CPU 可以使用共同的系统总线,因此可访问共同的外设和存储器。
- 内核进程的抢占。SylixOS 是可抢占的,所以一个内核进程可能被另一个高优先级的内核进程抢占。如果两个进程共同访问共享资源,就会出现竞争。
- 中断。中断可打断正在执行的进程,若中断处理程序访问进程正在访问的资源,则也会引发竞争。中断也可能被新的更高优先级的中断打断,因此,多个中断之间也可能引起并发而导致竞争。
以上三种情况只有 SMP 是真正意义上的并行,而其他是宏观上的并行,微观上的串行,且都会引发对共享资源的竞争问题。