В драйверах устройств Linux. Когда он вводит спин-блокировки, он дает следующий пример:
Ваш драйвер работает и только что снял блокировку, которая контролирует доступ к его устройству. Пока блокировка удерживается, устройство выдает прерывание, которое запускает ваш обработчик прерывания. Обработчик прерывания перед обращением к устройству также должен получить блокировку. Снятие спин-блокировки в обработчике прерываний — вполне законная вещь; это одна из причин того, что операции спин-блокировки не спят. Но что произойдет, если подпрограмма обработки прерывания будет выполняться на том же процессоре, что и код, первоначально снявший блокировку? Пока обработчик прерывания вращается, код без прерывания не сможет запуститься, чтобы снять блокировку. Этот процессор будет вращаться вечно.
Как решить эту проблему? Использование семафоров? Пожалуйста помоги.