Тема 2.2. Потоки

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

2.2.1 Застосування потоків

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

Основна причина використання_____________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Аргументи які використовувалися в підтримку створення процесів:

Першим аргументом - _______________________________________________________________________

____________________________________________________________________________________________________________________________________________________________________________________________

Другим аргументом на користь потоків __________________________________________________

____________________________________________________________________________________________________________________________________________________________________________________________

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

Третій аргумент на користь потоків також стосується продуктивності. _____________________________

____________________________________________________________________________________________________________________________________________________________________________________________

Багато текстові процесори мають властивість автоматичного збереження всього файлу на диск кожні кілька хвилин, щоб уберегти користувача від втрати його денної роботи у випадку програмних чи системних збоїв або відключення електроживлення. Третій потік може займатися створенням резервних копій на диску, не заважаючи першим двом. Ситуація, пов'язана із застосуванням трьох потоків, показана на рис. 2.5.


Рис. 2.5. Текстовий процесор, що використовує три потоки

 

Один із способів організації веб-сервера показаний на рис. 2.6. ____________________________________

____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

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

Рис. 2.6. Многопотоковий веб-сервер

________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Таблица 2.3, Три способа створення сервера

Модель Характеристики
Потоки Параллельная работа, блокирующие системные вызовы
Однопоточный процесс Отсутствие параллельной работы, блокирующие системные вызовы
Машина с конечным числом состояний Параллельная работа, неблокирующие системные вызовы, прерывания
   
   
   
   

Конструкція, в якій у кожного обчислення є зберігає мий стан, , і є деякий набір подій, які можуть відбуватися з метою зміни стану, називаютьсямашиною з кінцевим числом станів (finite-state machine), або кінцевим автоматом.

 

Класична модель потоків

Модель процесу заснована на двох незалежних поняттях: угрупованні ресурсів та виконанні.

___________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

У першому випадку потоки використовують єдине адресу веб простір та інші ресурси.

А в останньому випадку процеси використовують загальну фізичну пам'ять, диски, принтери та інші ресурси. Оскільки потоки мають____________________________________________________________

_____________________________________________________________________________________________

_____________________________________________________________________________________________

На рис. 2.8, а показані три традиційних процесу.

У кожного з них є свій власний адресний простір і єдиний потік управління, всі три потоки використовують загальний адресний простір.

Рис. 2.8. Три процеса, у кожного з яких по одному потоку (а). Один процес з трьома потоками (б)

 

Слід врахувати, що кожен потік має свій власний стек, що і показано на рис. 2.9.

Рис. 2.9. У каждого потока имеется свой собственный стек

 

Рис. 2.9. У кожного потоку є свій власний стек

 

Стек кожного потоку містить по одному фрейму для кожної уже визвання, але ще не повернула управління процедури. Такий фрейм містить локальні змінні процедури та адреса повернення управління по завершенні її виклику. Наприклад, якщо процедура X викликає процедуру Y, a Y викликає процедуру Z, то при виконанні Z в стеці будуть фрейми для X, Y і Z. Кожен потік буде, як правило, викликати різні процедури і, відповідно мати що відрізняється від інших других середу виконання. Тому кожному потоку потрібен свій власний стек.

Коли використовується багатопоточність, процес зазвичай починається з використання одного потоку. Немає необхідності (або навіть можливості) вказувати для нового потоку небудь адресний простір, оскільки він автоматично запускається в адресному просторі створює потоку. Іноді потоки мають ієрархічну структуру, при якій у них встановлюються взаємовідносини між батьківськими і дочірніми потоками, але найчастіше такі взаємини відсутні і всі потоки вважаються рівнозначними. Незалежно від наявності або відсутності ієрархічних взаємин створює потік зазвичай повертає ідентифікатор потоку, який дає ім'я новому потоку.

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