
- •Тема 2.1 Базові поняття процесів і потоків
- •2.1.1 Процеси і потоки в сучасних ос
- •Моделі процесів і потоків
- •2.1.3 Складові елементи процесів і потоків
- •Тема 2.2 Багатопотоковість та її реалізація
- •2.2.1 Поняття паралелізму
- •Види паралелізму
- •Переваги і недоліки багато потоковості
- •2.2.4 Способи реалізації моделі потоків
- •2.3 Тема Стани процесів
- •2.3.1 Стан процесу
- •2.3.2 Двох -станова модель процесу
- •2.3.3 Пяти-станова модель процесу
- •2.3.4 Процес та його життєвий цикл
- •2.4.1 Керуючі блоки процесів і потоків
- •2.4.2 Образи процесу і потоку.
- •2.5 Тема Перемикання контексту й обробка переривань
- •2.5.1Організація перемикання контексту
- •2.5.2 Обробка переривань
- •2.6 Тема Створення і завершення процесів і потоків
- •2.6.1 Створення процесів
- •2.6.2 Ієрархія процесів
- •2.6.3 Керування адресним простором під час створення процесів
- •2.6.4 Особливості завершення процесів
- •2.6.5 Створення і завершення потоків
- •2.7 Тема Мультипроцесування
- •2.7.1 Підходи реалізації мультипроцесування.
- •7.2.2 Види комп’ютерних систем з використанням декількох центральних процесорів
- •2.8 Тема Види міжпроцесової взаємодії
- •2.8.1.Проблеми міжпроцесової взаємодії
- •2.8.2 Види міжпроцесової взаємодії.
- •2.8.3 Особливості міжпроцесової взаємодії.
- •2.9 Тема Базові механізми міжпроцесової взаємодії
- •2.9.1 Міжпроцесова взаємодія на базі спільної пам'яті.
- •2.9.2 Основи передавання повідомлень.
- •2.10 Тема Керування процесами у Windows xp
- •2.10.1 Складові елементи процесу
- •2.10.2 Структури даних процесу
- •2.10.3 Створення процесів
- •2.10.4.Завершення процесів
- •2.10.5 Програмний інтерфейс керування процесами Win32 арі
- •2.11 Тема Керування потоками у Windows xp
- •2.11.1 Складові елементи потоку
- •2.11.2 Структури даних потоку
- •2.11.3 Створення потоків
- •2.11.4 Особливості програмного інтерфейсу потоків
- •2.11.5 Завершення потоків у Win32 api
- •2.12 Тема Керування процесами та потоками в unix і Linux
- •2.12.1 Керування процесами в unix і Linux
- •Керування потоками в Linux
2.5 Тема Перемикання контексту й обробка переривань
Самостійна робота №7
План
1. Організація перемикання контексту.
2. Обробка переривань.
Мета: Вивчити організацію перемикання контексту. Знати поняття обробки переривань.
2.5.1Організація перемикання контексту
Найважливішим завданням операційної системи під час керування процесами і потоками є організація перемикання контексту — передачі керування від одного потоку до іншого зі збереженням стану процесора.
Загальних принципів перемикання контексту дотримуються у більшості систем, але їхня реалізація обумовлена конкретною архітектурою. Звичайно потрібно виконати такі операції:
зберегти стан процесора потоку в деякій ділянці пам’яті (області зберігання стану процесора потоку);
визначити, який потік слід виконувати наступним;
завантажити стан процесора цього потоку із його області зберігання;
продовжити виконання коду нового потоку.
Перемикання контексту звичайно здійснюється із залученням засобів апаратної підтримки. Можуть бути використані спеціальні регістри та ділянки пам’яті, які дають можливість зберігати інформацію про поточну задачу (коли розглядають апаратне забезпечення, аналогом поняття «потік» є поняття «задача»), а також спеціальні інструкції процесора для роботи з цими регістрами та ділянками пам’яті.
Розглянемо апаратну підтримку перемикання задач в архітектурі ІА-32. Для збереження стану процесора кожної задачі (вмісту пов’язаних із нею регістрів процесора) використовують спеціальну ділянку пам’яті — сегмент стану задачі TSS. Адресу цієї області можна одержати з регістра задачі TR (це системний адресний регістр).
Для перемикання задач досить завантажити нові дані в регістр TR. У результаті значення регістрів процесора поточної задачі автоматично збережуться в її сегменті стану, після чого в регістри процесора буде завантажено стан процесора нової (або раніше перерваної) задачі й почнеться виконання її інструкцій.
Наступний потік для виконання вибирають відповідно до принципів планування потоків.
2.5.2 Обробка переривань
У процесі виконання потік може бути перерваний не лише для перемикання контексту на інший потік, але й у зв'язку із програмним або апаратним перериванням (перемикання контексту теж пов'язане із перериваннями, власне, із перериванням від таймера). Із кожним перериванням надходить додаткова інформація (наприклад, його номер). На підставі цієї інформації система визначає, де буде розміщена адреса процедури оброблювача переривання (список таких адрес зберігають у спеціальній ділянці пам'яті і називають вектором переривань).
Наведемо приклад послідовності дій під час обробки переривання:
збереження стану процесора потоку;
встановлення стека оброблювача переривання;
початок виконання оброблювача переривання (коду операційної системи); для цього з вектора переривання завантажується нове значення лічильника команд;
відновлення стану процесора потоку після закінчення виконання оброблювача і продовження виконання потоку.
Передача керування оброблювачеві переривання, як і перемикання контексту, може відбутися практично у будь-який момент. Основна відмінність полягає в тому, що адресу, на яку передається керування, задають на основі номера переривання і зберігають у векторі переривань, а також у тому, що код оброблювача не продовжується з місця, де було перерване виконання, а починає виконуватися щораз заново.