Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_Шеховцов_1.docx
Скачиваний:
73
Добавлен:
09.11.2019
Размер:
14.73 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

  • стек користувача (стек потоку, доступний у користувацькому режимі). Схема розташування в пам'яті образів процесу і його потоків зображена на

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

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

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

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

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

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

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

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

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

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

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

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

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