
- •Поняття операційної системи
- •Операційна система як розширена машина
- •Операційна система як менеджер ресурсів
- •Історія розвитку операційних систем
- •Перше покоління (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.1. Модель процесів
У моделі процесу все функціонує на комп'ютері програмне
забезпечення, іноді включаючи власне операційну систему, організовано у вигляді
набору логічно упорядкованих процесів, або, для стислості, просто процесів.
Процесом є виконувана програма, разом з поточними значеннями
лічильника команд, регістрів і змінних. З позицій цієї абстрактної моделі
у кожного процесу є власний віртуальний центральний процесор.
Насправді, зрозуміло, реальний процесор перемикається з процесу на
процес, але для кращого розуміння системи значно простіше розглядати
набір процесів, які виконуються паралельно (псевдопаралельно), ніж намагатися
уявити собі процесор, перемикається від програми до програми. Як
ми вже знаємо з першого розділу, це переключення називається багатозадачністю.
Оскільки процесор перемикається між програмами, швидкість, з якою
він виробляє свої обчислення, є непостійною і, можливо, навіть
інша при кожному новому запуску процесу. Тому не слід програмувати
процеси, виходячи з яких жорстко заданих тимчасових припущень.
Уявіть собі, наприклад, процес введення-виведення, що запускає накопичувач на
магнітній стрічці для відновлення упакованих файлів. Процес виконує
холостий цикл затримки з 10000 ітерацій, щоб надати накопичувача
час розігнатися, а потім дає команду вважати перший сектор. Якщо під час
холостого циклу процесор вирішить перемкнутися на іншу задачу, може
трапитися так, що працює з магнітофоном процес запуститься знову вже
після того, як зчитує голівка пройде перший запис. Якщо у процесу є
критичні тимчасові обмеження, тобто окремі події повинні
укладатися в задану кількість мілісекунд, необхідні спеціальні заходи,
дозволяють упевнитися в завершенні події. Проте зазвичай
багатозадачний режим, а також відносні швидкості різних процесів не впливають
на роботу більшості окремих процесів.
Різниця між процесом і програмою тяжко вловима, але тим не менше вона
має принципове значення. Скористаємося наступною аналогією:
уявіть собі програміста, досвідченого в кулінарії і своїми руками
випікає торт на день народження власної дочки. У його розпорядженні
є рецепт торта, кухня, обладнана всім необхідним, і інгредієнти для
торта: борошно, яйця, цукор, ванілін і т. п. Згідно з цією аналогією, рецепт - це
програма (тобто алгоритм), програміст виконує роль процесора, а інгредієнти торта є вхідні дані. Процесом є наступна послідовність дій: програміст читає рецепт, змішує
продукти і пече торт. Тепер уявіть, що на кухню вдається плаче син програміста і
кричить, що його вжалила бджола. Програміст зазначає, на чому він зупинився
(Зберігає поточний стан процесу), знаходить довідник по наданню першої
допомоги та діє у відповідності з інструкцією. Таким чином, наш процесор перемикається з одного процесу (випічка торта) на інший, з більш високим пріоритетом (надання першої допомоги), і кожен процес пов'язаний зі своєю програмою (рецепт торта і довідник по наданню першої допомоги). Після проведення всіх необхідних процедур по боротьбі з укусом бджоли програміст повертається до торту, продовжуючи з тієї операції, на якій він перервався.
Ми привели таку аналогію з метою показати, що процес - це деякого роду діяльність. У нього є програма, вхідні і вихідні дані, а також стан. Один процесор може перемикатися між різними процесами, спираючись на якийсь алгоритм планування для визначення моменту переходу від одного процесу до іншого.