Московський авіаційний інститут
(Національний дослідницький університет)
Кафедра 302
Автоматизовані системи обробки інформації та управління
Доповідь на тему
«Механізми синхронізації і взаємодії процесів і потоків»
Курс: «Системи реального часу»
Виконав студент
групи 03-423:
вертушки А.В.
Перевірив:
Секретарев В.Е.
Москва 2013р.
Введення
Синхронізація процесів в системах реального часу Організація деякого порядку виконання процесів називається синхронізацією (synchronization). Синхронізація процесів є основною функцією багатозадачних операційних систем і використовується для захисту ресурсів - за допомогою механізму синхронізації упорядковується доступ до ресурсу. Тобто, процес може отримати доступ до ресурсу тільки після того, як інший процес звільнив його. Введення додаткових змінних для захисту ресурсів не кращий вихід, оскільки ці змінні самі стають загальним ресурсом. Істота проблеми полягає в тому, що операції перевірки і зміни значення змінної захисту розділені в часі і можуть бути перервані в будь-який момент. Більше того, безперервний контроль значень цих змінних являє собою зайві витрати процесорного часу.
Існує досить великий клас засобів операційних систем, за допомогою яких забезпечується взаємна синхронізація процесів і потоків. Потреба в синхронізації потоків виникає тільки в мультипрограмній операційній системі і пов'язана з використанням апаратних і інформаційних ресурсів обчислювальної системи. Синхронізація необхідна для виключення гонок і тупиків при обміні даними між потоками, поділі даних, при доступі до процесора і пристроїв введення-виведення.
Ситуації, коли два або більше потоків обробляють колективні дані і кінцевий результат залежить від співвідношення швидкостей потоків, називаються гонками. У багатьох операційних системах ці кошти називаються засобами процесами взаємодії. Виконання потоку в мультипрограмній середовищі завжди має асинхронний характер. Дуже складно з повною визначеністю сказати, на якому етапі виконання буде знаходитися процес в певний момент часу. Навіть у однопрограмні режимі не завжди можна точно оцінити час виконання завдання.
Це час у багатьох випадках істотно залежить від значення вихідних даних, які впливають на кількість циклів, напрямки розгалуження програми, час виконання операцій введення-виведення і т. п. Так як вихідні дані в різні моменти запуску завдання можуть бути різними, то і час виконання окремих етапів і завдання в цілому є досить невизначеною величиною. Ще більш невизначеним є час виконання програми в мультипрограмній системі. Моменти переривання потоків, час перебування їх у чергах до поділюваних ресурсів, порядок вибору потоків для виконання - всі ці події є результатом збігу багатьох обставин і можуть бути інтерпретовані як випадкові.
У кращому випадку можна оцінити імовірнісні характеристики обчислювального процесу, наприклад ймовірність його завершення за даний період часу. Таким чином, потоки в загальному випадку (коли програміст не вжив спеціальних заходів щодо їх синхронізації) протікають незалежно, асинхронно один одному, Це справедливо як по відношенню до потоків одного процесу, який виконує загальний програмний код, так і по відношенню до потоків різних процесів, кожний з яких виконує власну програму.
Будь-яка взаємодія процесів або потоків пов'язано з їх синхронізацією, яка полягає в узгодженні їх швидкостей шляхом призупинення потоку до настання деякої події і подальшій його активізації при настанні цієї події. Синхронізація лежить в основі будь-якої взаємодії потоків, чи пов'язано це взаємодія з поділом ресурсів або з обміном даними. Наприклад, потік-одержувач повинен звертатися за даними тільки після того, як вони поміщені в буфер потоком-відправником. Якщо ж потік-одержувач звернувся до даних до моменту їх надходження в буфер, то він повинен бути припинений. При спільному використанні апаратних ресурсів синхронізація також абсолютно необхідна.
Коли, наприклад, активному потоку потрібен доступ до послідовного порту, а з цим портом у монопольному режимі працює інший потік, що знаходиться в даний момент в стані очікування, то операційна система (ОС) призупиняє активний потік і не активізує його до тих пір, поки потрібний йому порт не визволиться. Часто потрібна також синхронізація з подіями, зовнішніми стосовно до...