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

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

• Ідентифікатори. Кожен процес має свій власний Ідентифіка-індикатором, а також ідентифікаторами користувача і групи. Ідентифік-тор групи використовується для того, щоб додати їх до групи користувача права доступу до ресурсів.

• Обмін інформацією між процесами. В операційній системі Linux ис-користується такою ж механізм взаємодії між процесами, як і в операційній системі UNIX SVR4, описаною в розділі 6, "взаімоблокіровка і голодування".

• Зв'язки. Кожен процес містить в собі зв'язку з паралельними йому процесами, з родинними йому процесами (з якими він має загальний ро-дітельскій процес) і зв'язки з усіма своїми дочірніми процесами.

• Час і таймери. Сюди входить час створення процесу, а також кількістю-ство процесорного часу, витраченого на даний процес. З процесом а також можуть бути пов'язані інтервальні таймери (один або кілька). Таймер інтервалу задається в процесі за допомогою системного виклику; після закінчення періоду таймера процесу відправляється відповідний сигнал. Таймер може бути створений для одноразового або періодичного використання.

• Файлова система. Містить в собі покажчики на всі файли, відкриті даним процесом.

• Віртуальна пам'ять. Визначає відведену даному процесу віртуаль-ву пам'ять.

• Контекст, що залежить від процесора. Інформація по регістрах і стека, со-ставлять контекст даного процесу. На рис. 4.18 показані стану виконання процесу.

• виконувати. Цей стан відповідає насправді двох станів: поточний процес або виконується, або готовий до виконання.

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

• неперервні. Цей стан блокування іншого роду. Його відмінність від попереднього полягає в тому, що в неперервні стані процес непо-безпосередніх очікує виконання якогось апаратного умови, тому він не сприймає ніяких сигналів.

• Зупинений. Процес був зупинений і може бути продовжений лише при відповідному впливі іншого процесу. Наприклад, процес, який знаходиться в стані налагодження, може перейти в стан зупинки.

• Зомбі. Процес був припинений, але з якоїсь причини його структура ос-шається в таблиці процесів.

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

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

РЕЗЮМЕ, КЛЮЧОВІ ТЕРМІНИ І Контрольні питання

У деяких операційних системах розрізняються поняття процесу і пото-ка; перший з них має відношення до володіння ресурсами, а другий - до виконан-рівняно програми. Такий підхід може призвести до підвищення ефективності програми і зручний при складанні коду. У багатопотокової системі в рамках од-ного процесу є можливість задавати кілька потоків. Для цього можна ис-користувати або потоки на призначеному для користувача рівні, або потоки на рівні ядра. Потоки на призначеному для користувача рівні залишаються невидимими для операційної сис-теми, вони створюються і управляються бібліотекою потоків, яка виконується в просторі користувача процесу. Потоки на призначеному для користувача рівні дуже ефективні, так як при їх перемиканні не потрібно перемикати режим роботи процесора. Однак в одному процесі в кожен момент часу може виконуватися тільки один потік на призначеному для користувача рівні. Якщо один такий по-ток буде заблокований, це призведе до блокування всього процесу. Потоки на рівні ядра - це потоки, які управляються ядром. Завдяки тому, що та-кі потоки розпізнаються ядром, в багатопроцесорної системі можуть паралельно виконуватися кілька потоків одного і того ж процесу, а блокування потоку не призводить до блокування всього процесу. Однак для перемикання потоків на рівні ядра потрібно перемикати режим роботи процесора.

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

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

Ключові терміни Завдання Полегшений процес Процес Микроядро Потік Симетрична многопроцессорная Нить Потік на пользовательском- обробка Монолітна рівні операційна система Потік на рівні ядра

4.1. У табл. 3.5 перераховані типові елементи, що зустрічаються в управ-рами блоці процесу операційної системи, в якій не використовують-ся потоки. Які з них слід віднести до керуючого блоку потоку, а які - до керуючого блоку процесу в багатопотокової системі?

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

4.3. Назвіть дві різні і потенційно незалежні характеристики, що містяться в понятті процесу.

4.4. Наведіть чотири загальних приклад використання потоків в однопользова-тельской многопроцессорной системі.

4.5. Які ресурси зазвичай спільно використовуються всіма потоками процесу?

4.6. Перерахуйте три переваги потоків на призначеному для користувача рівні над потоками на рівні ядра.

4.7. Наведіть два недоліки потоків на призначеному для користувача рівні по порівняй-нію з потоками на рівні ядра.

4.8. Дайте короткий опис різних архітектур, наведених на рис. 4.8.

4.9. Перерахуйте основні особливості архітектури операційної системи для багатопроцесорної машини.

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

4.11. Назвіть сім потенційних переваг архітектури операційної сис-теми з мікроядром в порівнянні з монолітною операційною системою.

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

4.13. Назвіть три функції, які, швидше за все, будуть включені навіть в операційну систему з найменшим мікроядром.

4.14. Назвіть основну форму обміну інформацією між процесами в опе-раціонної системі з мікроядром.

В [MUKH96] наводиться обговорення питань, пов'язаних з архітектурою операційних систем для багатопроцесорних машин. В [СНАР97] міститься п'ять статей, в яких йдеться про сучасні напрямки розвитку багато-процесорних операційних систем. Цікаве обговорення принципів архі-тектури мікроядра можна знайти в [LIED95] і [LIED96]; у другому виданні увага зосереджується на питаннях продуктивності.

LEWI96 Lewis B.y Berg D. Threads Primer. - Upper Saddle River, NJ: Prentice

LIED95 Liedtke J. On ji-Kernel Construction. - Proceedings of the Fifteenth ACM

4.1. Відзначено, що використання декількох потоків в одному і тому ж процесі має наступні переваги: ​​(1) створення нового потоку в уже існуючому процесі вимагає менших непродуктивних витрат, перемикання потоків одного процесу вимагає менших витрат, ніж перемикання потоків різних процесів?

4.2. При порівнянні потоків на призначеному для користувача рівні і потоків на рівні ядра згадувалося, що недолік потоків на призначеному для користувача рівні полягає в тому, що виконання системного виклику блокує не тільки викликав потік, але і всі інші потоки даного процесу. Чому так відбувається?

а. Які переваги втрачаються при такому підході?

б. Якщо така модифікація буде реалізована, як слід здійснювати призначення ресурсів (пам'яті, файлів і т.д.) - на рівні процесу або на рівні потоку?

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

4.5. Якщо процес завершується, але якісь його потоки все ще виконуються, то чи будуть вони виконуватися і далі?

4.7. До многопроцессорной системі з 8 процесорами підключені 20 стрічкопротяжних пристроїв. У систему надходить велика кількість завдань, причому ка-ждое з них для завершення вимагає максимум 4 стрічкопротяжних пристрою. Припустимо, що кожне завдання починає виконуватися з вимогою тільки трьох пристроїв; четверте йому буде потрібно тільки через досить тривалий термін, причому буде використовуватися дуже недовго. Припустимо також, що джерело завдань нескінченний.

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

б. Запропонуйте альтернативну стратегію для підвищення ступеня вико-вання стрічкопротяжних пристроїв, яка в той же час дозволяє уникнути взаімоблокіровок. Чому дорівнює максимальна кількість одночасно виконуються завдань? Який величиною обмежена кількість простоюють стрічкопротяжних пристроїв?

4.8. В описі станів потоків на призначеному для користувача рівні в операційній системі Solaris говорилося про те, що потік користувальницького рівня може поступитися управлінням іншому потоку з таким же пріоритетом. Чи можлива ситуація, коли в системі знаходиться готовий до виконання потік з вищим пріоритетом, і, отже, виконується потік поступиться управління потоку з таким же або більш високим пріоритетом?

Схожі статті