Частина тексту файла (без зображень, графіків і формул):
“Взаємовиключення” як спосіб взаємодії процесів.
Взаємовиключення – спосіб взаємодії між процесами, при якому під час звертання одного процесу до даних що розділяються всім іншим процесам це заборонено. Якщо процес звертається до змінних які розділяються то цей процес знаходить на своїй критичній ділянці або критичній області. Для всіх інших процесів, які розділяють дані можливість входу в критичні ділянки повинна бути виключена. Він не повинен блокуватись на критичній ділянці. Критичні ділянки потрібно програмувати найбіль ретельно, щоб виключити наприклад можливість зациклювання. Таким чином, маємо наступну задачу. Ми хочемо реалізувати взаємовиключення з виконаним таким чином 4-х обмежень:
задача повинна бути розв’язана програмним способом на комп’ютері який не має спеціальних команд взаємовиключення, причому:
а). кожна команда виконується як операція яка не може бути поділена
б). при одночасній спробі декількох процесорів звернутись до того самого елемента даних спрацьовує апаратна схема захисного блокування пам’яті. Будується черга яка дозволяє виконуватись тільки одне звертання.
не повинно бути ніяких припущень щодо відносних швидкостей виконання асинхронних паралельних процесів
процеси які знаходяться поза своїми критичними ділянками не можуть заважати заходити у їх власні користувацькі ділянки
не повинно бути безумовного відкидання моменту входу процесів в іх критичні ділянки
Концепція “семафорів” як засіб керування “взаємовиключенням”
Семафори
Всі найважливіші поніття які мають відношення до взаємовиключення були об’єднані в концепції семафорів. Семафор – це захищена змінна значення якої можна читати та міняти тільки за допомогою операцій Р, V також операцій ініціалізації двійкові семафори можуть приймати значення 0 та 1. семафори з рахуванням можуть приймати невід’ємні цілі значення. Операція Р-типу семафори S:
EMBED Visio.Drawing.6
Узагальнений зміст примітиву Р(S) полягає у перевірці біжучого значення семафора S і якщо він не менше 0 то виконується перехід до наступної за даним примітивом операції, процес змінюється на деякий час з виконання і переходить в стан пасивного очікування. V(S) пов’язана із збільшенням значення семафора на 1 і переводом одного або декілька процесів в стан готовності.
Операції P та V виконуються ОС у відповідь на запит виданий деяким процесом і який вміщує ім’я семафора. Для роботи з семафорами треба мати операцію ініціалізації семафора. Семафори можна використовувати для реалізації механізму синхронізації процесів шляхом блокування розблокування. Один процес блокує себе виконуючи операцію Р з погчатковим значенням S=0 для того щоб очікувати на прихід деякої події. Інишй процес виясняє що подія яка очікуватиме відбулась і відновлює заблокований процес за допомогою операції V. Семафори з рахуванням осбливо корисні у випадку коли деякий ресурс виділяється з множини ідентичних ресурсів кожна Р-операція показує що ресурс виділяється деякому процесу а V-операція що ресурс повертає в загальну множину. Операції над семафорами можна реалізувати з використанням режиму активного очікування, але це може призвести до втрати ефективності, щоб цього уникнути подібні операції потрібно реалізовувати в ядрах.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!