Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
740.35 Кб
Скачать

2.1.6. Реалізація процесів

Для реалізації моделі процесів операційна система підтримує

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

процесу є по запису. (Деякі автори називають ці записи

блоками управління процесом.) Записи таблиці містять інформацію про

стані процесу, лічильнику команд, покажчику стека, розподілі пам'яті,

стані відкритих файлів, використанні і розподілі ресурсів,

аварійних та інших сигналах, а також всю іншу інформацію,

необхідно зберігати при перемиканні із стану виконання в стан

готовності, щоб пізніше процес міг бути запущений знову так, як ніби він

ніколи не зупинявся.

У MINIX 3 за взаємодію між процесами, управління пам'яттю і

файлами відповідальні різні модулі зі складу системи, тому таблиця

розбита на розділи, де кожен модуль підтримує відносяться до нього

поля. У табл. 2.1 представлені деякі найбільш важливі поля типовою

системи. До теми цього розділу відносяться тільки поля першої колонки; решти

інші колонки лише демонструють інформацію, використовувану в інших

областях системи.

Таблиця 2.1. Деякі поля типової записи таблиці процесів MINIX 3. Поля

згруповані для ядра, модулів управління процесами і файлової системою

Ядро Управління процесами Управління файлами

Регістри Покажчик на текстовий сегмент Маска UMASK

Лічильник команд Покажчик на сегмент даних Кореневий каталог

Слово стану Покажчик на сегмент стека Робочий каталог

програми Статус завершення Дескриптори файлів

Покажчик стека Стан сигналів Реальний

ідентифікатор

користувача

Стан процесу Ідентифікатор процесу

Поточний пріоритет Батьківський процес Ефективний

Максимальний пріоритет Група процесу користувацький

Залишилося число тактів Процесорний час дочірнього Реальний ідентифікатор

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

Використаний Реальний ідентифікатор Ефективний

процесорний час користувача (UID) ідентифікатор групи

Покажчики черги Ефективний ідентифікатор Управління повідомлень користувача

Тепер, після знайомства з таблицею процесів, настав час сказати

кілька слів про те, як створюється ілюзія паралельного виконання процесів на

машині з одним процесором і кількома пристроями введення-виведення. Потім

ми познайомимося з роботою планувальника в MINIX 3 але все сказане стосується й більшості інших сучасних ОС. З кожним класом пристроїв введення-виведення (гнучкий диск, жорсткий диск, таймер, термінал) пов'язана структура даних, звана таблицею дескрипторів переривань. Самою важливою частиною кожного запису цієї таблиці є вектор переривань. Вектор переривань містить адресу процедури обробки переривань. Уявіть, що в момент дискового переривання працював користувальницький процес 23.

Вміст лічильника команд процесу, слово стану програми і, можливо, один

або кілька регістрів записуються в (поточний) стек апаратними

засобами. Потім відбувається перехід за адресою, вказаною у векторі переривання

диска. От і все, що роблять апаратні засоби. З цього моменту вся інша

обробка переривання проводиться програмно, звичайно стандартної

процедурою-обробником.

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

управління поточним процесом в таблиці процесів. Потім інформація,

вміщена в стек перериванням, віддаляється, і покажчик стека переставляється на

тимчасовий стек, використовуваний програмою обробки процесу. Такі дії,

як збереження регістрів і установка покажчика стека, неможливо навіть

висловити на мові високого рівня (наприклад, на С). Тому вони виконуються

невеликий асемблерній програмою, зазвичай однаковою для всіх переривань,

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

Взаємодія між процесами в MINIX 3 організовується за допомогою повідомлень, таким чином, наступний крок - формування повідомлення дисковому процесу, який очікує інформації від системи в заблокованому стані. У повідомленні вказується, що сталося саме переривання, щоб його можна було відрізнити від повідомлень інших користувальницьких процесів, запитують читання дискових блоків і т. п. Після цього стан процесу змінюється з блокування на готовність, і виконується виклик планувальника. У MINIX 3 у процесів можуть бути різні пріоритети, з метою дати обробникам введення-виведення перевагу перед звичайними користувацькими програмами. Відповідно, якщо в даний момент у дискового процесу найбільший пріоритет, для запуску буде обраний цей процес. Якщо ж пріоритет перерваного процесу не менше, то буде запущений він, а дисковому доведеться трохи почекати. По завершенні своєї роботи ця програма викликає процедуру на мові С, яка виконує всі інші дії, пов'язані з конкретним перериванням. (Ми припускаємо, що операційна система написана на С, що є стандартним рішенням для всіх існуючих ОС.) Схема обробки переривання нижнім рівнем операційної системи і дії планувальника розглядають розглядаються далі. Слід зазначити, що зокрема можуть дещо

варіюватися від системи до системи.

1. Апаратне забезпечення зберігає в стеку лічильник команд і т. і.

2. Апаратне забезпечення завантажує новий лічильник команд з вектора

переривань.

3. Асемблерна процедура зберігає регістри.

4. Асемблерна процедура встановлює новий стек.

5. Запускається програма обробки переривань на С.

6. Код передачі повідомлень відзначає готовність одержувача повідомлень.

7. Планувальник вибирає наступний процес.

8. Програма на С передає управління асемблерній процедурою.

9. Асемблерна процедура запускає новий процес.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]