软件中的锁靠操作系统的锁保障, 操作系统的靠硬件的保障 操作系统中虽然锁看起来可能只是一个布尔变量(例如标志位),但它们的实现依赖于硬件支持的原子操作。也就是说,在获取或释放锁时,操作系统会使用诸如 **test-and-set**、**compare-and-swap (CAS)** 或 **fetch-and-add** 等原子指令。这些指令能够保证一个操作在执行期间不会被中断,也不会被其他处理器同时访问,从而避免竞态条件。 另外,为了确保多处理器环境下各个 CPU 看到的内存状态是一致的,操作系统还会利用 **内存屏障(memory barriers)** 来控制指令的执行顺序和内存访问的可见性。通过这些硬件和软件机制,操作系统可以保证在修改锁的标志位时不会出现数据竞争,确保锁的正确性和同步效果。