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

Механізм багатопотокової обробки.

Засобом розпаралелювання обчислень у сучасних ОС є механізм багатопоточної обробки. У цьому вводиться нова одиниця роботи – потік виконання.

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

Створення потоків вимагає від ОС менше витрат, ніж процесів. На відміну від процесів, що належать різним конкуруючим за ресурси додаткам, всі потоки одного процесу завжди належать до одного додатка. Внаслідок цього операційна система ізолює потоки набагато меншою мірою, ніж процеси в традиційній мультипрограмній системі. Щоб організувати взаємодію та обмін даними, потокам не потрібно звертатися до ОС, їм достатньо використовувати загальну пам'ять – один потік записує дані, а інший їх читає.

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

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

Створити процес – це, перш за все, означає створити описник процесу (дескриптор процесу), в якому містяться всі відомості про процес, необхідні операційній системі для управління ним. Зазвичай описувач процесу складається з двох частин – власне дескриптора та контексту процесу, які доступні лише ядру ОС.

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

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

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

Створення описувача процесу знаменує появу у системі ще одного претендента на обчислювальні ресурси. Починаючи з цього моменту при розподілі ресурсів ОС має брати до уваги потреби нового процесу.

Під час виконання цих процесів підсистема управління процесами тісно взаємодіє з підсистемою управління пам'яттю і файлової системою.

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

У вихідному стані потік (або процес – для систем без багатопоточності) перебуває у зупиненому стані.Момент вибірки потоку виконання здійснюється відповідно до прийнятим у цій системі правилом надання процесорного часу і з урахуванням всіх існуючих у системі процесів і потоків.

Планування та диспетчеризація потоків.

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

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

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

Майже у всіх сучасних ОС реалізованівитісняючі алгоритми планування потоків, в яких рішення про перемикання процесора з виконання одного потоку на інший приймається операційною системою.

При плануванні потоків, зазвичай, застосовуються змішані алгоритми планування, засновані як у квантуванні (виділенні потоку кванта часу використання процесора), і на пріоритетах.

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

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

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

Диспетчеризація зводиться до наступного:

  • збереження контексту поточного потоку, який потрібно змінити;
  • завантаження контексту нового потоку, вибраного внаслідок планування;
  • запуск нового потоку виконання.

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

У мультипрограмній системі потік може бути в одному з трьох основних станів:

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

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