Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вступ, ст 22-93.doc
Скачиваний:
5
Добавлен:
02.09.2019
Размер:
1.62 Mб
Скачать

Взаємоблокировка

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

ситуація називається тупиком, тупиковою ситуацією або взаимоблокировки.

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

на рис. 1.13, а. Чотири автобуси наближаються до перехрестя. За кожним

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

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

Комп'ютерні процеси можуть потрапляти в аналогічні ситуації, в яких

вони не можуть просуватися далі. Уявіть собі комп'ютер з накопичувачем на

магнітній стрічці і записуючим компакт-диски пристроєм (CD-recorder).

Тепер уявіть, що кожному з двох процесів потрібно записати дані з стрічки на компакт-диск. Процес 1 запитує та отримує в користування пристрій зі стрічкою. Потім процес 2 запитує та отримує пристрій для запису компакт-дисків. Після цього процес 1 запитує пристрій для запису компакт-дисків і припиняється до тих пір, поки процес 2 не звільнить його. Нарешті, процес 2 запитує пристрій зі стрічкою і також зупиняється на час, тому що магнітофон вже зайнятий процесом 1. Перед нами типовий глухий кут, з якого немає виходу. Ми в деталях вивчимо тупикові ситуації і подивимося, що можна з ними робити в розділі 3.

Управління пам'яттю

В кожному комп'ютері є оперативна пам'ять, використовувана для зберігання

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

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

У найпростішому випадку максимальна величина адресного простору для

процесу менше основної пам'яті. Тоді процес може заповнити свій адресний простір, і пам'яті вистачить на те, щоб утримувати його цілком. Однак на багатьох комп'ютерах адресація 32 - або 64-розрядна, що дає для простору адрес 232 і 2е4 байтів відповідно. Що станеться, якщо адресний простір процесу виявиться більше, ніж оперативна пам'ять комп'ютера, і процес захоче використовувати його цілком? На перших комп'ютерах подібним процесам просто не щастило. У наші дні існує метод, званий віртуальною пам'яттю, при якому операційна система тримає частину адрес в оперативній пам'яті, а частина на диску і змінює їх місцями при необхідності. Ця важлива функція операційної системи, а також інші поняття, пов'язані з керуванням пам'яттю, будуть розглянуті в розділі 4.