ошибка личинки “лишний участник RAID” на личинке обновления

Блокировка является путем к двум или больше задачам (процессы, потоки) для синхронизации. А именно, когда для обеих задач нужен неустойчивый доступ к ресурсу, который может только использоваться одной задачей за один раз, это - путь к задачам расположить не использовать ресурс одновременно. Для доступа к ресурсу задача должна выполнить следующие шаги:

take the lock
use the resource
release the lock

Взятие блокировки не возможно, если другая задача уже взяла его. (Думайте о блокировке как о физическом маркерном объекте. Или объект находится в секции, или у кого-то есть он в их руке. Только человек, держащий объект, может получить доступ к ресурсу.) Так “берут блокировку”, действительно означает, “ожидают, пока ни у кого больше нет блокировки, затем возьмите ее”.

С высокоуровневой точки зрения существует два главных способа реализовать блокировки: спин-блокировки и условия. Со спин-блокировками, предпринимая меры блокировки, просто “вращающиеся” (т.е. делающие ничто в цикле) ни до кого еще, имеет блокировку. С условиями, если задача пытается взять блокировку, но заблокирована, потому что другая задача содержит ее, вновь прибывший вводит очередь ожидания; операция выпуска предупреждает любую ожидающую задачу, что блокировка теперь доступна.

(Этих объяснений недостаточно, чтобы позволить Вам реализовать блокировку, потому что я ничего не сказал об атомарности. Но атомарность не важна здесь.)

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

Существует хорошее объяснение спин-блокировок и другие механизмы параллелизма ядра Linux в Драйверах устройств Linux, главе 5.

9
10.11.2011, 02:55
1 ответ

Это - ошибка на сценарии личинки обновления. После того, что сказано в отчете об ошибках Debian, патч был применен в восходящем направлении, таким образом, он должен быть зафиксирован в пакете Debian в некоторое время.

8
27.01.2020, 20:07
  • 1
    спасибо за Ваш Ответ. Я не нашел эти детали использованием our friends from google. спасибо всем –  Bastian Ebeling 28.02.2011, 13:50

Теги

Похожие вопросы