Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson_04_SPZ.doc
Скачиваний:
8
Добавлен:
10.11.2018
Размер:
83.46 Кб
Скачать

7. Монітороподібні засоби синхронізації паралельних процесів.

Як показав аналіз вирішенню деяких паралельних задач механізм семафорів з такими перевагами як простота, незалежність від кількості процесів, відсутність станів активного очікування має ряд недоліків. Це пов’язане з тим, що семафори не вказують явно ні на умову синхронізації, ні на відповідний критичний ресурс, тому при побудові складних систем синхронізації алгоритми вирішення паралельних задач стають занадто складними. Тому використовують так звані монітори – пасивні набори змінних, які можуть розділяти самі процеси і спеціальні процедури для доступу до змінних, які мають властивості рекурсивного (повторного) виклику.

Паралельні процеси використовують монітор в режимі розділення часу. В кожен момент часу монітором може користуватись лише один процес. Наприклад, якщо будь – який ресурс розподіляється програмним планувальником, то при кожному розподіленні цього ресурсу процес повинен звернутися до цього планувальника, який повинен мати змінні для відслідковування зайнятий цей ресурс чи ні. До цього планувальника процеси можуть звернутися в будь – який момент часу, але планувальник не забезпечує обслуговування декількох процесів одночасно. Така програма планувальник є найпростішим прикладом монітору.

В моніторі автоматично здійснюється вирішення задачі взаємного виключення поцесів. Якщо процес звертається до деякого ресурсу монітора і цей ресурс є зайнятий, то монітор видає команду очікування (wait()) з кодом помилки, який визначає причину очікування. Процес, який запитує цей ресурс звільняє монітор і очікує звільнення відповідного ресурсу у зовнішній по відношенню до монітора черзі. На протязі певного часу, якщо процес, який займав цей ресурс звільняє і віддає його системі, то відповідна процедура монітора приймає повідомлення про звільнення ресурсу. Потім монітор може чекати поки не з’являться запити від інших процесів яким необхідний цей ресурс. А може існувати ситуація, коли є декілька процесів, які очікують звільнення ресурсів. В цьому випадку монітор видає команду signal(), яка сповіщає, що один з очікуваних процесів може зайти і використати даний необхідний ресурс.

Використання моніторів як основного засобу синхронізації дозволяє звільнити процеси від необхідності явного розподілення інформації між собою. Доступ до розділювальних змінних та областей пам’яті контролюється власне тілом самого монітора. Так як монітори входять в склад ОС, то його змінні є завжди системними змінним. Це автоматично виключає критичні інтервали (секції) процесів тому, що в певний момент часу монітором може користуватися тільки один процес. Одночасно два процеси не можуть отримати доступ до змінних монітору.

Основні переваги моніторів:

  • гнучкий механізм, який дозволяє реалізувати не тільки семафор, а й інші операції синхронізації;

  • наявність всіх розділювальних змінних в тілі монітора, що дозволяє їх виключити з вихідних модулів паралельних процесів;

  • монітори дають змогу паралельним процесам сумісно використовувати програмні модулі, які є критичними секціями, на відміну від семафорів, які вимагають наявність критичних секцій в кожному з паралельних процесів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]