Спинлок в драйвере устройства - PullRequest
2 голосов
/ 09 ноября 2010

Может кто-нибудь объяснить точное использование спин-блокировки в случае драйвера устройства.Я просто сбит с толку, так как во многих подпрограммах обработки прерываний я видел спин-блокировки.Как спинлок заняты ожиданием.это может вызвать задержку при других прерываниях. Пожалуйста, если возможно, перечислите некоторые сценарии для драйвера устройства, в которых мы можем использовать spinlock

Я новичок в этой области.ваша помощь делает для меня начальный импульс.

1 Ответ

4 голосов
/ 09 ноября 2010

Спинлоки используются в сценариях с высоким Irql, когда вы не можете передать свой квант планировщику.

Так, например, когда вы хотите заблокировать некоторую структуру данных (вне прерываний), вы получаете мьютекс. Когда мьютекс принадлежит кому-то другому, ваш поток помещается в список ожидания в планировщике, пока мьютекс не будет освобожден. Затем он получает право собственности на мьютекс, и все остальные потоки, обращающиеся к нему, усыпляются, когда они пытаются получить мьютекс.

Когда вы находитесь в прерывании, вы не можете этого сделать. У вас нет контекста потока, и это прерывание нельзя откладывать «на неопределенный срок». Но иногда вам нужен доступ к общим данным внутри прерывания. Когда в системе присутствует более одного ЦП, несколько прерываний и потоков могут работать одновременно. Поэтому вы должны защищать рабочие очереди, общие объекты и т. Д., Чтобы они не были повреждены. Для этого вы используете спин-блокировки. Поскольку политика заключается в том, чтобы делать как можно меньше вещей внутри секции, защищенной спин-блокировкой, вы можете ожидать, что не будет проблем с вращением на самой блокировке только в течение пары циклов, пока ее не освободит владелец.

Итак, что из этого следует, что когда вы получаете доступ к общим данным из прерывания, у вас есть для использования спин-блокировки, потому что нет других примитивов, которые могут быть б.

И, как уже отмечалось, всегда держите спинлок только в течение очень небольшого промежутка времени.

...