Page 137 - 6571
P. 137
зберігає винятковий доступ до монітора, а процес, який отримав
сигнал, почне роботу після того як отримає винятковий доступ до
монітора. По суті, операція signal просто повідомляє процес
про його розблокування, після чого він повертається в чергу
процесів, що очікують входу в монітор.
Порядок «сигналізувати і очікувати» виконує переривання
обслуговування. Процес, що виконує операцію signal, передає
монітор процесу, що був запущений, тобто запущений процес пе-
рериває роботу сигналізуючого процесу. У даному випадку про-
цес, що виконав операцію signal додається в чергу процесів, які
очікують входу монітор.
Діаграма станів на рисунку 15.1 ілюструє процедуру синхро-
нізації в моніторах. Якщо певний процес володіє монітором, то
інший процес, що виконує виклик його процедури поміщається у
чергу, в іншому випадку даний процес отримує контроль над мо-
нітором. Коли монітор звільняється (після завершення процедури
або виконання операції wait), то процес, що знаходиться в «го-
лові» черги може у нього ввійти. Виконуючи операцію wa-
it(cv), процес покидає монітор і поступає у чергу, зв’язану з
умовною змінною. Коли процес із монітору виконує операцію
signal(cv), то при порядку «сигналізувати і продовжити» (SC)
процес із «голови» черги переходить у монітор після того як за-
вершить роботу процес, що знаходиться в моніторі. При порядку
«сигналізувати і очікувати» (SW) процес, що виконується в моні-
торі поміщається у чергу, а процес із черги переходить до вико-
нання в моніторі.
Черга змінної
умови
Очікування
SC
SW
Монітор
Вхідна вільний Виконання в
черга моніторі
Виклик Повернення
SW
Рисунок 15.1 – Діаграма станів під час синхронізації в моніторі
136