
- •Поняття операційної системи
- •Операційна система як розширена машина
- •Операційна система як менеджер ресурсів
- •Історія розвитку операційних систем
- •Перше покоління (1945-1955): електронні лампи і комутаційні панелі
- •Друге покоління (1955-1965): транзистори і системи пакетної обробки
- •Третє покоління (1965-1980): інтегральні схеми і багатозадачність
- •Четверте покоління (з 1980 року по наші дні): персональні комп'ютери
- •Історія minix 3
- •Основні концепції
- •Процеси
- •Оболонка
- •Системні виклики
- •Системні виклики для управління процесами
- •Системні виклики для управління сигналами
- •Системні виклики для управління файлами
- •Системні виклики для управління каталогами
- •Системні виклики для захисту
- •Системні виклики для управління часом
- •Структура операційної системи
- •1.5.2. Багаторівневі системи
- •1.5.3. Віртуальні машини
- •1.5.4. Екзоядра
- •1.5.5. Модель клієнт-сервер
- •2.1.1. Модель процесів
- •2.1.2. Створення процесів
- •2.1.3. Завершення процесів
- •2.1.4. Ієрархії процесів
- •2.1.5. Стани процесів
- •2.1.6. Реалізація процесів
- •2.1.7. Програмні потоки
- •2.2. Взаємодія між процесами
- •5.1. Файли
- •5.1.1. Іменування файлів
- •5.1.2. Структура файлу
- •5.1.3. Типи файлів
- •5.1.4. Доступ до файлів
- •5.1.5. Атрибути файлів
- •5.1.6. Операції з файлами
- •5.2. Каталоги
- •5.2.1. Прості каталоги
- •5.2.2. Ієрархічні системи каталогів
- •5.2.3. Шляхи
- •5.2.4. Операції з каталогами
- •5.3. Реалізація файлової системи
- •5.3.1. Структура файлової системи
- •5.3.2. Реалізація файлів
- •5.3.4. Організація дискового простору
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. Асемблерна процедура запускає новий процес.