Управління процесами

роцесс одне з найважливіших абстрактних понять у Unix-подібних операційних сістемах1 По суті, процес-це програма, тобто обєктний код, що зберігається на будь-якому носії інформації і що знаходиться в стані виконання Однак процес – це не тільки виконуваний програмний код, який для операційної системи Unix часто називається text section (сегмент тексту абосегмент коду)Процеси також включають в себесегмент даних (data section),містить глобальні змінні набір ресурсів, таких як відкриті файли і очікують на обробку сигнали адресний простір і один або більшепотоків

виконанняПроцес – це живий результат виконання програмного коду

Потоки виконання, які часто для скорочення називають просто потоками (thread),   являють собою обєкти, що виконують певні операції всередині процесу Кожен потік включає в себе унікальний лічильник команд (program counter), стек виконання і набір регістрів процесора Ядро планує виконання окремих потоків, а не процесів У традиційних Unix-подібних операційних системах кожен процес містив тільки один потік Однак у сучасних системах багатопотокові програми використовуються дуже широко Як буде показано далі, в операційній системі Linux використовується унікальна реалізація потоків – між процесами і потоками немає ніякої різниці Потік в операційній системі Linux – це спеціальний тип процесу

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

Інша абстракція – це файл

Слід підкреслити, що сама по собі програма процесом не є процес – цещо виконуєтьсяпрограма плюс набір відповідних ресурсів Звичайно, може існувати два процеси, які виконують одну і ту ж програму Насправді може навіть існувати два або більше процесів, які спільно використовують одні й ті ж ресурси, такі як відкриті файли, або адресний простір Процес починає своє існування з моменту створення, що втім не дивно В операційній системі Linux таке створення виконується за допомогою системного виклику fork () (буквально, розгалуження або вилка), який створює новий процес шляхом повного копіювання вже існуючого Процес, який викликав системну функцію fork (), називається породжує (батьківським, pannt),новий процес іменують породженим (дочірній, child) Батьківський процес після цього продовжує виконання, а породжений процес починає виконуватися з місця повернення з системного виклику Часто після розгалуження в одному з процесів бажано виконати яку-небудь іншу програму Сімейство функцій exec * () дозволяє створити нове адресний простір і завантажити в нього нову програму У сучасних ядрах Linux функція fork () реалізована через системний виклик clone (), який буде розглянуто в наступному розділі

Вихід з програми здійснюється за допомогою системного виклику exit () Ця функція завершує процес і звільняє всі зайняті ним ресурси Батьківський процес може запросити про стан породжених їм процесів за допомогою системного виклику wait4 () 2, який змушує один процес очікувати завершення іншого Коли процес завершується, він переходить в спеціальне стан зомбі (zombie), яке використовується для представлення завершеного процесу до того моменту, поки що породжує його процес не викличе системну функцію wait () або waitpid ()

Інша назва для процесу – завдання або завдання (task) Про процеси в ядрі операційної системи Linux говорять як про завдання У цій книзі обидва поняття взаємозамінні, хоча по можливості для представлення працюючої програми в ядрі буде використовуватися термін задача,а для представлення в режимі користувача – термінпроцес

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*