Page 112 - 6571
P. 112
Розглянемо задачу реалізації бар’єру для двох процесів. Для
цього мають виконуватися дві вимоги. По-перше, жоден процес
не повинен перейти бар’єр, поки до нього не підійшли обидва
процеси. По-друге, бар’єр повинен допускати багаторазове вико-
ристання, оскільки зазвичай одні і ті ж процеси синхронізуються
після кожного етапу обчислень. Для рішення задачі критичної се-
кції достатньо лише одного семафора, що виконує блокування,
оскільки потрібно просто визначити, чи знаходиться процес в
критичній секції. Але при бар’єрній синхронізації необхідні два
семафора для сигналізації підходу процесу до бар’єра та відходу
від нього.
Сигнальний семафор s – це семафор з нульовим (як правило)
початковим значенням. Процес сигналізує про подію, виконуючи
операцію V(s). При цьому інші процеси очікують події,
виконуючи операцію P(s). Для двохпроцесного бар’єру, існує
дві важливі події, які пов’язані із прибуттям процесів до бар’єра.
Отже, задачу реалізації бар’єру для двох процесів можна рішити
за допомогою двох семафорів arrive1 та arrive2відповідно.
Кожен процес повідомляє про своє прибуття до бар’єра,
виконуючи операцію V для свого семафора, після чого очікує
прибуття іншого процесу, виконуючи для його семафора
операцію P. Дане рішення приведено в лістингу 17. Оскільки
бар’єрна синхронізація симетрична, процеси працюють однаково
– кожен із них сигналізує про своє прибуття і очікує на прибуття
інших. Використовувані таким чином семафори схожі на змінні у
вигляді прапорців, оскільки їх застосування повинне відповідати
принципам синхронізації з прапорцями.
За допомогою наведеного в лістингу 17 бар’єру можна
реалізувати бар’єр-метелик для n процесів, або бар’єр з
розповсюдженням. В обох випадках необхідний масив семафорів
arrive. На кожному етапі і-й процес спочатку повідомляє про
своє прибуття, виконуючи операцію V(arrive[i]), а потім
очікує прибуття решти процесів, виконуючи операцію P над їх
елементами з масиву arrive. На відміну від ситуації із
змінними-прапорцями, в даному випадку потрібен тільки один
масив семафорів arrive, оскільки дія операції V
«запам’ятовується», тоді як значення змінної-прапорця може
бути перезаписане.
111