Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В компьютерной науке , воронка является синхронизацией примитива , используемой в ядре развития , чтобы защитить системные ресурсы. Впервые использовавшиеся в Digital UNIX как способ «перенаправить» выполнение драйвера устройства на один процессор, воронки теперь используются в ядре Mac OS X для сериализации доступа к BSD- части XNU . [1]

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

Поскольку воронка автоматически сбрасывается, когда поток блокируется, необходимо позаботиться о том, чтобы синхронизированные ресурсы были получены снова после любой операции блокировки. В частности, получение воронки может быть блокирующей операцией, поэтому, если требуется несколько воронок, они должны быть получены одновременно. Это ограничивает полезность воронок, поскольку увеличивает степень детализации блокировки, когда требуется одновременное удержание нескольких воронок.

В Mac OS X [ править ]

В OS X 10.4 и новее есть только одна воронка. До версии 10.4 было две воронки: одна защищает сетевые ресурсы, а другая защищает другие ресурсы ядра BSD. Одновременно потоку разрешалось удерживать только одну воронку, и удерживание обеих вызывало панику ядра . В результате этих ограничений и отсутствия детализации воронки постепенно выводятся из Mac OS X. Например, сетевая воронка была заменена более мелкими механизмами блокировки.

См. Также [ править ]

Заметки [ править ]

Примечания к источникам см. В библиографии ниже.

  1. Перейти ↑ Singh 07, pp. 1223-1229

Ссылки [ править ]

Внешние ссылки [ править ]