Керуючі блоки процесів і потоків



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

Керуючий блок потоку (Thread Control Вlоск, ТСВ) відповідає активному потоку, тобто тому, який перебуває у стані готовності, очікування або виконання. Цей блок може містити таку інформацію:

· ідентифікаційні дані потоку (зазвичай його унікальний ідентифікатор);

· стан процесора потоку: користувацькі регістри процесора, лічильник інструкцій, покажчик на стек;

· інформацію для планування потоків.

Таблиця потоків – це зв'язний список або масив керуючих блоків потоку. Вона розташована в захищеній області пам'яті ОС.

Керуючий блок процесу (Process Control Вlоск, РСВ) відповідає процесу, що присутній у системі. Такий блок може містити:

· ідентифікаційні дані процесу (унікальний ідентифікатор, інформацію про інші процеси, пов'язані з даним);

· інформацію про потоки, які виконуються в адресному просторі процесу (наприклад, покажчики на їхні керуючі блоки);

· інформацію, на основі якої можна визначити права процесу на використання різних ресурсів (наприклад, ідентифікатор користувача, який створив процес);

· інформацію з розподілу адресного простору процесу;

· інформацію про ресурси введення-виведення та файли, які використовує процес.

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

Таблицю процесів організовують аналогічно до таблиці потоків. Як елементи в ній зберігатимуться керуючі блоки процесів.

Образи процесу і потоку

Сукупність інформації, що відображає процес у пам'яті, називають образом процесу (process image), а всю інформацію про потік – образом потоку (thread image). До образу процесу належать:

· керуючий блок процесу;

· програмний код користувача;

· дані користувача (глобальні дані програми, загальні для всіх потоків);

· інформація образів потоків процесу.

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

До образу потоку належать:

· керуючий блок потоку;

· стек ядра (стек потоку, який використовується під час виконання коду потоку в режимі ядра);

· стек користувача (стек потоку, доступний у користувацькому режимі).

Схема розташування в пам’яті образів процесу і його потоків зображена на рис. 3.3. Усі потоки конкретного процесу можуть користуватися загальною інформацією його образу.

Рис. 3.3. Образи процесу і його потоків

Перемикання контексту й обробка переривань

Організація перемикання контексту

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

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

· зберегти стан процесора потоку в деякій ділянці пам'яті (області зберігання стану процесора потоку);

· визначити, який потік слід виконувати наступним;

· завантажити стан процесора цього потоку із його області зберігання;

· продовжити виконання коду нового потоку.

Перемикання контексту звичайно здійснюється із залученням засобів апаратної підтримки. Можуть бути використані спеціальні регістри та ділянки пам'яті, які дають можливість зберігати інформацію про поточну задачу (коли розглядають апаратне забезпечення, аналогом поняття «потік» є поняття «задача»), а також спеціальні інструкції процесора для роботи з цими регістрами та ділянками пам'яті.

Розглянемо апаратну підтримку перемикання задач в архітектурі ІА-32. Для збереження стану процесора кожної задачі (вмісту пов'язаних із нею регістрів процесора) використовують спеціальну ділянку пам'яті – сегмент стану задачі ТSS. Адресу цієї області можна одержати з регістра задачі ТR. (це системний адресний регістр).

Для перемикання задач досить завантажити нові дані в регістр ТR. У результаті значення регістрів процесора поточної задачі автоматично збережуться в її сегменті стану, після чого в регістри процесора буде завантажено стан процесора нової (або раніше перерваної) задачі й почнеться виконання її інструкцій.

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

Обробка переривань

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

Наведемо приклад послідовності дій під час обробки переривання:

· збереження стану процесора потоку;

· встановлення стека оброблювача переривання;

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

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

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

Докладніше реалізацію обробки переривань буде розглянуто в розділі 15.


Розділ 4

Планування процесів і потоків

Загальні принципи планування


Дата добавления: 2018-04-05; просмотров: 1993; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!