Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект ос 2013-5.doc
Скачиваний:
0
Добавлен:
21.01.2020
Размер:
207.36 Кб
Скачать

2 Реалізація багатозадачного режиму

Поняття процесу і ресурсу

Послідовний процес (що іноді називається »завдання«) є робота, вироблювана послідовним процесором при виконанні програми з її даними.

Проаналізуємо це визначення. Воно підкреслює послідовний характер процесу, тобто виконання команд в певному порядку. Термін «завдання» ми розумітимемо як синонім терміну «процес»(у деяких ОС ці терміни розрізняються). Далі, процес - поняття динамічне. Програма - це текст, процес - виконання цього тексту. Звичайно, на практиці ми часто говоримо: «програма викликає функцію», «програма чекає введення» і тому подібне, проте, строго кажучи, правильніше було б «процес, що виконує програму, викликає».

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

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

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

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

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

Надалі усюди розглядатиметься тільки асинхронний паралелізм, оскільки він характерний для роботи ОС.

Іншим засадничим поняттям, тісно пов'язаним з управлінням процесами, є поняття ресурсу. Під ресурсом розуміється будь-який апаратний або програмний об'єкт, який може знадобитися для роботи процесів і доступ до якого може при цьому викликати конкуренцію процесів. Говорячи спрощено, ресурс - це щось дефіцитне в обчислювальній системі. До найважливіших ресурсів будь-якої системи відносяться процесор(точніше сказати, процесорний час), основна пам'ять, периферійні пристрої, файли. Залежно від конкретної ОС, до дефіцитних ресурсів можуть відноситися місця в таблиці процесів або в таблиці відкритих файлів, буфери кеша, блоки у файлі підкочування і інші системні структури даних.

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