Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiya_1-10.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
528 Кб
Скачать
☆

1.2. Механізми синхронізації процесів

Найпростіший спосіб забезпечити взаємне виключення – дозволити процесу, який знаходиться в критичній секції забороняти всі переривання. Однак, цей спосіб непридатний тому, що небезпечно довіряти керування системою користувальницькому процесу. Він може надовго зайняти процесор, а при краху в критичній точці, крах потерпить вся система тому, що переривання ніколи не буде дозволено. Іншим способом є використання блокуючи змінних. З кожним поділюваним ресурсом зв’язується двійкова змінна, яка приймає значення = 1, якщо ресурс вільний, тобто жоден процес не перебуває момент у критичній секції, яка пов’язана з даним процесом, і значення = 0, якщо ресурс зайнятий.

Рис. 1. Алгоритм процесу, що використовується для реалізації взаємного виключення доступу до поділюваного ресурсу D, викор. блокуючи змінну F(D).

Перед входом в критичну секцію процес перевіряє чи вільний ресурс D, якщо він зайнятий, то перевірка циклічно повторюється. Якщо вільний, то значення змінної F(D) установлюється рівним 0, і процес входить у критичну секцію. Після того як процес виконає всі дії з поділюваним ресурсом D, значення змінно знову встановлюється рівної 1. Якщо всі процеси написані з використанням вище описаних умов, то взаємне виключення гарантується. Треба відмітити, що операція перевірки і установки блокуючої змінної повинна бути неподільною.

Нехай у результаті перевірки змінної процес визначив, що ресурс вільний, але відразу після цього, не встигши встановити змінну в 0, був перерваний. За цей час інший процес зайняв ресурс, увійшовши у свою критичну секцію, але також був перерваний, не завершивши роботу з поділюваним ресурсом. Коли керування було повернуто першому процесу, він вважаючи ресурс вільним, встановив ознаку зайнятості й почав виконувати свою критичну секцію. У такий спосіб був порушений принцип взаємного виключення, що може привести до небажаних наслідків. Для запобігання таких ситуацій у системі команд машини бажано мати єдину команду перевірка-установка або реалізувати системними засобами відповідні програмні примітиви, які б забороняли переривання на протязі всієї операції перевірки установки.

Реалізація критичних секцій з використанням блокуючи змінних має істотний недолік. Протягом часу, коли один процес перебуває в критичній секції, інший процес, якому потрібно той же ресурс, буде виконувати дії по опитанню блокуючої змінної, даремно витрачаючи час процесу. Для усунення таких ситуацій може бути використаний апарат подій. За допомогою цього засобу можуть вирішуватись не тільки проблеми взаємовиключення, але й більше загальні задачі синхронізації процесі.в. У різних ОС апарат подій реалізується по своєму, але в кожному випадку використовується системні функції аналогічного призначення, які умовно назвемо WAIT(x) i POST(x), де х – ідентифікатор деякої події.

РИСУНОК 2

Якщо ресурс зайнятий, то процес не виконує циклічне опитування, а викликає систему ф-цію WAIT(D). D позначає подію, що полягає у звільненні ресурсу D. Ця ф-ція переводить активний процес у стан очікування і робить відмітку в його дескрипторі про те, що процес очікує події D. Процес, що у цей час використовує ресурс D, після виходу із критичної секції виконує системну ф-цію POST(D), в результаті чого ОС переглядає чергу процесів, що очікують і переводять процес, що очікує подію D у стан готовності.

ЛЕКЦІЯ 2

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