Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л_3_ПРОЦЕСИ.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

2. Потоки виконання. Визначення і структура.

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

Будь-який потік складається з двох компонентів:

об’єкта ядра, через який операційна система керує потоком і в якому зберігається статистична інформація про потік (додаткові потоки створюються також ядром);

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

Полотно 306

Рис. 2. Структура потоку виконання

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

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

Приклад. Система потоків може відстежувати факт блокування потоку змінною алгоритму, наприклад «Mutualexecution», і зумовлену цим неможливість перемикання на виконання такого потоку.

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

У такому підході є два аспекти:

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

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

3. Стан процесів та потоків виконання

У багатозадачній (багатопроцесорній) системі процес може перебувати в одному з трьох основних станів:

  • виконання – активний стан процесу, в якому процес має всі необхідні ресурси і безпосередньо виконується процесором;

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

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

На протязі життєвого циклу кожен процес переходить з одного стану в другий відповідно до алгоритму планування процесів, реалізованого у операційній системі. Типовий граф станів процесу показано на рис.3.

Полотно 279

Рис.3. Типовий граф станів процесів

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]