如何从内核启用和禁用中断可以防止竞争条件?

时间:2016-05-15 05:56:23

标签: c operating-system interrupt interrupt-handling

我唯一能想到的是启用/禁用中断也会禁用内核抢占。这将使多个线程同时触及共享内核数据变得不可能(?)。

是否有一些我遗漏的东西(可能是因为你一次只能为一个CPU启用/禁用中断?)?

1 个答案:

答案 0 :(得分:1)

在单处理器系统的日子里,阻塞中断是锁定内核数据结构的方法。如果中断X正在改变某些东西,它就不希望执行更高优先级的中断Y并使数据结构处于模糊状态。当然,X应该只在最短的时间内阻止中断。

在多处理器系统中,您必须添加软件锁定,以防止其他进程在修改系统数据结构时(包括中断和系统调用)混淆系统数据结构。

但是,您仍然需要阻止中断。如果中断X的数据结构被锁定(或部分锁定)并且中断Y能够执行,它可能会尝试锁定相同的数据结构并永远等待。