Лекція: Процеси: визначення та моделі
Вступ
Однією з основних функцій операційної системи є управління процесами. Процес — це фундаментальне поняття в операційних системах, що відображає виконання програмного коду. Операційна система забезпечує створення, управління та завершення процесів, а також управління їх ресурсами, включаючи пам'ять, процесорний час та доступ до файлів. У цій лекції ми детально розглянемо, що таке процеси, їх життєвий цикл і різні моделі процесів, що використовуються в сучасних операційних системах.
1. Що таке процес?
1.1. Визначення процесу
Процес — це виконувана програма разом з усіма її ресурсами, включаючи пам'ять, файли, та інші дані, необхідні для її виконання. Це динамічний об'єкт, що включає як сам код програми, так і контекст її виконання (регістри, стан пам'яті тощо).
Процес складається з:
Коду програми (текстовий сегмент).
Даних (статичні змінні, стек, купа).
Системних ресурсів (відкриті файли, дескриптори, сигнали).
1.2. Характеристики процесу
Унікальний ідентифікатор (PID): кожен процес має унікальний ідентифікатор, що використовується операційною системою для управління процесами.
Стан процесу: процес може перебувати в різних станах, таких як виконання, очікування, готовність тощо.
Пріоритет: процеси можуть мати різні пріоритети, що визначають порядок їх виконання.
Контекст процесу: включає стан регістрів, програмний лічильник, стек викликів і інші важливі дані.
2. Життєвий цикл процесу
Процес проходить через кілька станів під час свого життя. Основні стани включають:
Створення (New): процес створюється за допомогою виклику системи, наприклад, fork() в Unix-подібних системах.
Готовність (Ready): процес готовий до виконання, але чекає на доступ до процесора.
Виконання (Running): процес активно виконується на процесорі.
Блокування (Blocked/Waiting): процес очікує на певну подію, наприклад, ввід/вивід або завершення іншого процесу.
Завершення (Terminated): процес завершує своє виконання і звільняє всі ресурси.
3. Моделі процесів
У різних операційних системах можуть використовуватися різні моделі процесів. Розглянемо найпоширеніші з них.
3.1. Однозадачність (Single-tasking)
Опис: в однозадачних операційних системах одночасно може виконуватися лише один процес. Інші процеси можуть почати виконання лише після завершення поточного процесу.
Приклад: MS-DOS, де одночасно виконується тільки одна програма.
3.2. Багатозадачність (Multitasking)
Опис: багатозадачність дозволяє операційній системі перемикатися між різними процесами, створюючи ілюзію одночасного виконання кількох програм.
Типи багатозадачності:
Кооперативна багатозадачність: процеси самостійно віддають контроль операційній системі.
Примусова багатозадачність: операційна система контролює розподіл процесорного часу, перериваючи процеси за допомогою таймерів.
Приклади: Windows, Linux, macOS.
3.3. Модель процесів "Продюсер-споживач" (Producer-Consumer)
Опис: у цій моделі один або кілька процесів створюють дані (продюсери), тоді як інші процеси їх споживають (споживачі). Зазвичай використовуються буфери або черги для зберігання даних між продюсерами і споживачами.
Приклад: системи обробки потокових даних, системи потокової передачі відео.
3.4. Пул процесів (Process Pool)
Опис: пул процесів — це техніка, при якій створюється набір процесів, які залишаються готовими до виконання завдань. Коли нове завдання з'являється, одне з наявних процесів бере його на обробку.
Переваги:
Зменшує накладні витрати на створення і знищення процесів.
Підвищує продуктивність при роботі з великою кількістю короткочасних завдань.
Приклад: сервери баз даних, багатопотокові веб-сервери.
4. Управління процесами
Операційна система використовує планувальник для управління процесами. Планувальник визначає, які процеси отримають доступ до процесора і в якому порядку.
4.1. Алгоритми планування
Планування з витісненням (Preemptive Scheduling): процеси можуть бути витіснені з процесора іншими процесами з вищим пріоритетом.
Планування без витіснення (Non-preemptive Scheduling): процеси виконуються до свого завершення або до моменту переходу в стан очікування.
Алгоритми:
FCFS (First-Come, First-Served)
SJF (Shortest Job First)
Round Robin (з фіксованим квантом часу)
Пріоритетне планування
5. Взаємодія між процесами (IPC)
Для ефективної роботи багатозадачних систем важливою є взаємодія між процесами. Основні методи взаємодії:
Семафори: для синхронізації процесів.
Черги повідомлень: для обміну даними.
Спільна пам'ять: для обміну великими обсягами даних.
Висновок
Процеси є основними будівельними блоками будь-якої операційної системи. Розуміння того, як ОС створює, управляє та завершує процеси, є ключовим для ефективного програмування та адміністрування систем. Знання різних моделей процесів та методів їх управління допомагає оптимізувати роботу програм та покращити продуктивність системи.
Питання для вихідного контролю
Що таке процес в операційній системі?
Які основні компоненти процесу?
Опишіть основні стани, через які проходить процес у своєму життєвому циклі.
Чим відрізняється кооперативна багатозадачність від примусової?
Які переваги має використання пулу процесів?
Що таке модель "Продюсер-споживач"?
Наведіть приклади алгоритмів планування процесів.
Що таке семафори та для чого вони використовуються?
Які переваги та недоліки примусового планування?
Як операційна система управляє взаємодією між процесами?













