Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures.docx
Скачиваний:
57
Добавлен:
10.12.2018
Размер:
1.24 Mб
Скачать
    1. Потоки виконання. Визначення і структура

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

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

Процес 1 Процес 1 Процес 1

Потік

Потік

Ядро

Ядро

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

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

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

Приклад. Система потоків може відстежувати факт блокування потоку змінною

алгоритму, наприклад «Mutual execution», і зумовлену цим неможливість пе- ремикання на виконання такого потоку.

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

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

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

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

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

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

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

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

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

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

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

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

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