Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Статьи » Механізми синхронізації і взаємодії процесів і потоків

Реферат Механізми синхронізації і взаємодії процесів і потоків





ес виповнюється швидше іншого, то за певний проміжок часу він буде частіше отримувати доступ до ресурсу. Процес вимушений чекати закінчення іншого тільки в тому випадку, коли останній перебуває в критичній секції. Одночасно гарантується і живучість. Якщо виконання процесу з яких-небудь причин припиняється, то, за умови, що він перебував поза критичної секції, це не заважає розвитку іншого процесу.

Само по собі застосування семафорів не гарантує запобігання тупикових ситуацій. Якщо два процеси використовують семафори наступним чином wait (Pl) wait (P2) wait (P2) wait (Pl) ... ... (* захищений ресурс *) (* захищений ресурс *) ... ... signal (Pl) signa l (P2) signal (P2) signal ( Pl) то як і раніше існує ризик виникнення тупика. Якщо перемикання процесів відбувається між двома операторами wait першої програми, а друга програма виконає свої оператори wait , то це призводить до тупику, оскільки кожна програма очікує від іншого звільнення семафора.

Проблема полягає в тому, що, хоча семафор гарантує нерозривність перевірки і установки значення, він сам залишається захищеним ресурсом. У наведеному прикладі явно порушена заборона послідовного виділення, і це призводить до можливості тупикових ситуацій. Семафор може допомогти при синхронізації взаємопов'язаних дій. Наприклад, якщо процес повинен працювати з даними тільки після того, як вони лічені з зовнішнього порту, програма може мати наступний вигляд: Process Читання даних Process Обробка даних while true do while true do begin begin (* читання нових даних *) wait (data_available); signal (data_available); (* обробка даних *) end; end; Це вирішене?? е відокремлює операцію введення даних від їх обробки. На появу нових даних вказує значення семафора, відмінне від 0. Якщо існує механізм буферизації (проміжного зберігання) нових даних, то процедура обробки зможе отримати всі дані, навіть якщо вони надходять швидше, ніж вона в змозі їх прийняти. У системах реального часу прийнято відокремлювати процедури, які потребують швидкої реакції, наприклад прийом даних з зовнішнього порту, від інших процесів.

Для захисту критичних секцій, в які за визначенням будь-якої миті часу може входити тільки один процес, використовуються двійкові семафори, також звані mutex (від mutual exclusion- взаємне виняток).

У цьому випадку не можна використовувати звичайні семафори, так як їх значення може перевищувати 1 і, отже, кілька програм можуть отримати доступ до ресурсу, зменшуючи значення семафора. Операція signal над двійковим семафором завжди встановлює його значення в 1. Операція wait зменшує це значення з 1 до 0 і дозволяє процесу триватиме далі. Якщо семафор має значення 0, то процес, що виконує wait , має чекати до тих пір, поки значення семафора не зміниться.

Помилки синхронізації, пов'язані з неправильним використанням семафорів, важко виявляються. Процес, який не виконує операцію wait , може увійти в критичну секцію одночасно з іншим процесом, що призведе до непередбачуваних результатів. Природно, не можна говорити, що така помилка виявиться при тестуванні; вона навіть може ніколи не відбутися за весь час існування системи. Легше знайти протилежну помилку - відсутня операція signal може в певний момент призвести до зупинки, принаймні, одного з процесів, що достатньо просто виявити. Компілятор не має можливості перевірити, чи правильно використовуються семафори, тобто, чи узгоджені операції wait з операціями signal в інших модулях і пов'язані Чи семафори з відповідними ресурсами, оскільки це залежить від логіки алгоритму. Більше того, розміщення семафорів в програмі, як і інших команд, довільно. Турбота про перевірку правильності програми лежить на програмістові. Використання структурного програмування істотно полегшує вирішення цього завдання.

Семафори є зручним засобом високого рівня для заміщення операції test_and_set і допомагають уникнути циклів зайнятого очікування. Проте їх неправильне використання може призвести до ситуації гонок і до тупикам. 4. Події У деяких випадках кілька процесів, що мають доступ до загальних даних, повинні працювати з ними тільки при виконанні деяких умов, необов'язково пов'язаних з даними і різних для кожного процесу. Умовою, наприклад, може бути надходження нових даних...


Назад | сторінка 4 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Штучний інтелект: чи може машина бути розумною?
  • Реферат на тему: Алгоритмізація та програмування процесів обробки даних у середовищі СУБД ти ...
  • Реферат на тему: Чи може комп'ютер мислити
  • Реферат на тему: Чого нас може навчити йога?
  • Реферат на тему: Чи може музика зупинити танки