Теория распараллеливания и синхронизация. Демьянович Ю.К - 50 стр.

UptoLike

этого процесса - выход из критической секции. Этим определяется
желаемая программа, которая может иметь вид
CSenter;
while (!B) { CSexit; CSenter; };
# цикл = процесс многократно выходит из критической секции
# в ожидании события B = true
S;
CSexit;
Если стратегия планирования является в слабом смысле, то
цикл завершится при условии, что B станет истинным и будет оста-
ваться таковым, пока пр оцесс проходит критическ ую секцию.
В случае реализации стратегии, справедливой в сильном смыс-
ле, цикл завершится и в случае, когда B становится истинным бес-
конечное число раз.
Написанная выше программа верна, но не эффективна из-за
того, что процесс многократно выходит из критической секции в
ожидании того, что какой-то другой процесс в этот момент войдет в
свою критическую секцию и изменит переменные так, что B станет
истинным. Это может привести к конфликтам при обращении к
памяти или к ресурсам коммуникационной среды.
Поэтому для сокращения числа попыток раздобыть B =
true вводят задержку Delay, замедляющую скорость выполнения
процесса. Получаемый протокол называется протоколом “отхода”
(“back-off”).
ПРОТОКОЛ ОТХОДА (BACK-OFF)
CSenter;
while (!B) { CSexit; Delay; CSenter; };
S;
CSexit;
Замечание 1. Задержкой Delay может быть, например, пустой
цикл, выполняющий случайное колич ество повторений.
Замечание 2. Протокол, аналогичный описанному, применяет-
ся в сетях Ethernet: для перед ачи сообщения контроллер Ethernet
51