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

Згідно визначенню, даному в / 7 /, «послідовний процес (іноді званий« завдання ») є робота, вироблена послідовним процесором при виконанні програми з її даними».

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

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

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

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

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

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

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

Іншим основним поняттям, тісно пов'язаним з управлінням процесами, є поняття ресурсу.

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

можуть ставитися місця в таблиці процесів або в таблиці відкритих файлів, буфери кеша, блоки у файлі підкачки і інші системні структури даних.

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