Здавалка
Главная | Обратная связь

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



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

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

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

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

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

 

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

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

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

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

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

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

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







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.