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

25. Семафори та їх використання.

В 1965 р. Дейкстра цiлу змiнну для пiдрахунку сигналiв в запуску збережених на майбутнє. Ним був запропонований новий тип змiнних семафори, значення яких можна було 0 у випадку вiдсутностi збережених сигналiв активiзацiї або деяким додатнiм числом, яке вiдповiдає кiлькостi вiдкладених активiзуючи сигналiв. Дейкстра запропонував 2 операцiї Down i Up. Операцiя Down порiвнює значення семафора з 0. Якщо значення семафора бiльше 0, то операцiя Down зменшує її. Якщо значення семафора = 0, то процедура Down не повертає керування процесу, а процес переводиться в стан очiкування. Операцiя Up збiльшує значення семафора. Якщо з цим семафором пов’язанi 1 або декiлька очiкуваних процесiв, якi не можуть завершити бiльш ранню операцiю Down, одне з них вибирається системою (випадковим чином) i йому дозволено завершити свою операцiю Down. Таким чином пiсля операцiї Up застосованої до семафора, зв’язаного з декiлькома очiкуюючими процесами значення семафора та к i запишеться рiвним 0, але число очiкуваних процесiв збiльшить на 1. в оригiналi Дейкстра використав замiсть Down i Up позначення P i V.

26. Поняття м’ютекса.

Iнколи використовується спрощена версiя семафора, яку називають м’ютексом. Вiн не здатен рахувати, а лише керує взаємним виключенням доступу до сумiсно використовуваних ресурсiв чи кодiв. Реалiзацiя м’ютекса є досить пристою i евективною, що робить використання м’ютексiв особливо корисним у випадку потокiв, що дiють тiльки в просторi користувача. М’ютекс – це змiнна, яка може знаходитись в 1 з 2 станiв – блокований або неблокований, тому для опису м’ютекса потрiбно всього 1 бiт, хоча частiше використовується цiла змiнна в якої 0 означає неблокований стан, а всii iншi значення вiдповiдають блокованому стану. М’ютекси легко реалiзувати в просторi користувача якщо доступна команда tsl.

27. Поняття монiторiв.

Монiтор – це набiр процедур, змiнних та iнших структур даних, об’єднаний в особливий модуль. Процеси можуть викликати процедури монiтора, але процедури оголошених поза монiтором немає прямого доступу до внутрiшнiх структур даних монiтора. Деталiзацiя взаємних виключень допомагає важлива властивiсть монiтора при зверненнi до монiтора в будь-який момент часу активним може бути лише один процес. Монiтор є структурним компонентом мови програмування, тому компiлятор знає, що обробляти виклики процедур монiтора треба перед тим, як викликати решту процедур. Звичайно при виклику процедури монiтора першi декiлька команд процедурi перевiряють чи немає в монiторi активного процесу, якщо активний процес є, то викликаю чому процесу потрiбно починати, в iншому випадку запит задовольняється. Iснує декiлька мов програмування, якi пiдтримують монiторинг (одна з них Java), синхронiзованi методи на мовi Java вiдрiзняється вiд стандартних монiторiв вiдсутнiстю змiнних станiв.

28. Поняття бар’єрiв.

Бар’єр – це механiзм синхронiзацiї, що використовується частiше для груп процесiв, нiж для ситуацiї з 2-ма процесами. Деякi додатки подiляються на фази i iснує правило, що процес не може перейти в наступну фазу, поки до цього не готовi всi iншi процеси. Цього можна досягти, розмiстивши в кiнцi кожної фази бар’єр. Коли процес доходить до бар’єра, вiн блокується, поки всi процеси не дiйдуть до бар’єра.