为什么线程需要禁用中断来实现锁定



我到处读到实现锁线程需要硬件支持 - 禁用中断。

无论我们如何选择实现锁,我们都必须有一些硬件 支持。实现锁的一种可能性是禁用中断,

您描述的是用于在单处理器系统上运行的旧操作系统中简单锁定的机制。即便如此,复杂的锁定(例如,对于数据库)也需要更多。

现在,对于多处理器系统,同时阻塞中断所有处理器将无济于事。

支持多处理的 CPU 具有内存联锁指令。旧的VAX在位设置和设置指令上有一个互锁分支,甚至还有一个从队列中删除的联锁指令,用于重型工作。这种硬件支持已经存在了很长时间。

最新更新