Page 68 - 2578
P. 68
3 якщо значення semop є від’ємне, процес очікує, допоки
значення семафора не збільшиться або не дорівнюватиме
абсолютному значенню semop, після чого це значення
віднімається від значення семафора.
Перша операція змінює значення семафора безумовно,
друга — лише перевіряє його значення, тобто зреалізовується
умовне виконання, третя — перевіряє й змінює значення
семафора — умовне виконання операції. Наведений приклад є
прикладом кооперативно виконуваних семафорів як функцій
ОС: взаємодіючі процеси мають домовлятися щодо їхнього
використання. ОС не накладає жодних обмежень на
використання семафорів, зокрема процеси самі вирішують,
яке значення семафора є таким, що дозволяє, на яку величину
зміниться значення семафора тощо. Інтенсивний обмін
даними поміж процесами за допомогою каналів та черг
повідомлень може зменшити продуктивність системи. Це
пов’язано з тим, що дані, передавані за допомогою цих
об’єктів, копіюються з буфера передавального процесу у
буфер ядра, а потім — у буфер приймального процесу.
Розподілювану пам’ять зорганізовано у такий спосіб,
який надає двом чи більшій кількості процесів можливість
безпосереднього доступу до однієї області пам’яті для обміну
даними. Безумовно, процеси мають попередньо “домовитись”
щодо правил використання розподілюваної пам’яті.
Наприклад, допоки один з процесів записує дані до
розподілюваної пам’яті, решта процесів мають утримуватись
від роботи з нею. Завдання кооперативного використовування
розподілюваної пам’яті розв’язується за допомогою
синхронізування виконання процесів засобами семафорів.
Сценарій роботи з розподілюваною пам’яттю має вигляд:
1 Сервер отримує доступ до розподілюваної пам’яті,
використовуючи семафор.
2 Сервер записує дані у розподілювану пам’ять.
67