Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Взаємо-виключення




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

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

Процес повинен проходити свою критичну ділянку якнайшвидше. Він не повинен блокуватися у критичній ділянці. Критичні ділянки треба програмувати найбільш ретельно, щоби виключити, наприклад, зациклювання.

 

Для прикладу розглянемо задачу.

Програма друкування файлів. Програма повинна надрукувати всі файли, імена яких послідовно (у порядку надходження) розміщені у загальнодоступному файлі „замовлень”, іншими програмами.

Спеціальна,загальнодоступна, змінна Next містить номер першої вільної, доступної для запису позиції файлу замовлень. Процеси-клієнти читають цю змінну, записують у вказану позицію файлу „замовлень” назву свого файлу та нарощують значення Next на одиницю.

Припустимо, що в деякий момент процес R вирішив роздрукувати свій файл. (Див. Рис. __). Для цього він прочитав значення змінної Next (допустимо, що воно рівне 4). Процес запам’ятав це значення, але розмістити імені файлу не встиг, так як його виконання було перерване (вичерпався квант часу).

 

Рис. __

 

Черговий процес S, який хоче роздрукувати свій файл, прочитав те саме значення змінної, розмістив свій файл у вказаній позиції (4) та наростив значення змінної на одиницю.

Коли керування буде передано процесові R, то він продовжить своє виконання з розміщення імені свого файлу в позицію 4 файлу „замовлень”, так як цю позицію він запам’ятав підчас попереднього кванту часу, підмінивши таким чином назву файлу, що записана процесом S.

Таким чином процес S ніколи не побачить свого файлу роздрукованим.

 

Складність проблеми синхронізації полягає в нерегулярності ситуацій, що виникають. Усе визначається взаємними швидкостями виконання процесів та моментами їх переривання. Тому відлагодження процесів, що взаємодіють є складною задачею. Ситуація, подібна тій, що розглянута у прикладі, коли два чи більше процесів обробляють спільні дані (ті, що розділяються) а кінцевий результат залежить від співвідношення швидкостей цих процесів, називається перегонами.

Для вирішення проблеми, що описана прикладом друкування файлів, необхідно реалізувати задачу із взаємо-виключення із забезпеченням наступних чотирьох обмежень:

1. Задача повинна розв’язуватися чисто програмним способом на машині без спеціальних команд взаємо-виключення.

Причому: - кожна машинна команда виконується як операція, що не може бути поділена;

- при одночасній спробі декількох процесів звернутися до того ж самого елементу даних спрацьовує апаратна схема захисного блокування пам’яті (будується черга, що дозволяє виконувати тільки одне звертання в кожен певний момент часу);

2. Не повинно бути ніяких припущень щодо відносних швидкостей виконання асинхронних паралельних процесів.

3. Процеси, що знаходяться поза своїми критичними секціями, не можуть заважати іншим процесам заходити у свої власні критичні ділянки.

4. Не повинно бути безмежного відкладання часу входу процесів у свої критичні ділянки.

Програмну реалізації цієї задачі запропонував голландський математик Дейкстра.

Алгоритм Дейкстри.

Процес 1. (П1). Процес 2. (П2).

 

program Алгоритм Дейкстри

var вибранийпроцес: цілий; { перший, другий }

П1хочезайти, П2хочезайти: логічний;

 

procedure Процес1




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 661; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.