Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка С_Р 2 частина.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Урок № 82

(згідно навчальної робочої програми)

Тема: «Перемикання контексту та обробка перемикань»

Питання:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Контрольні питання:

  1. Як здійснюється організація перемикання контексту?

  2. Які дії включає перемикання контексту?

  3. Як здійснюється обробка переривань?

  4. Розкажіть послідовність дій при обробці переривань?

Література: Шеховцов В.А. Операційні системи. – К.: Видавнича група BHV, 2005. – 576 с.: іл., стор. 54-56.