- •Операційні системи
- •1.Принципи побудови ос. Теоретичні основи процесу
- •2. Властивості та класифікація процесів. Життєвий цикл процесу.
- •Арі процесів. Функція fork. Функція exit.
- •Сигнали. Функція wait, waitpid. Функція exec.
- •Ресурси ос. Визначення ресурсу. Властивості та класифікація ресурсів.
- •Концепція віртуалізації. Віртуальна машина.
- •Дисципліни розподілу ресурсів які використовуються в ос.
- •Концепція переривань Теорія переривань
- •Блокування. Сигнали. Сигнальна маска. Функція sigaction.
- •Процеси-демони. Поняття про демони. Основні демони unix. Приклад програми демону
- •Засоби, механізми і підсистеми ос. Системи керування процесами. Дворівнева система керування процесами.
- •Засоби, механізми і підсистеми ос. Рівень довгострокового планування. Схема довгострокового рівня планування.
- •Засоби, механізми і підсистеми ос. Рівень короткострокового планування. Схема рівня планування.
- •Структури даних процесів. Стан процесів у unix. Особливості планувальника unix ( Linux).
- •Дескриптори процесів.
- •Взаємодія між процесами у unix.
- •Канали. Fifo (First InFirst Out). Повідомлення (черги повідомлень).
- •Семафори. Задачі синхронізації.
- •Архітектура та основні питання побудови механізмів синхронізації
- •Семафорна техніка синхронізації та упорядкування процесів.
- •Підсистема введення/виведення системи unix. Драйвери пристроїв. Типи драйверів. Базова архітектура драйверів
- •Файлова підсистема ос. Суперблок. Індексні дескриптори. Імена файлів. Каталоги.
- •Побудова підсистем ядра мультипрограмних ос. Організація віртуальної оп. Основні поняття та принципи віртуалізації пам’яті.
- •Принципи керування пам’яттю у unix. Віртуальна та фізична пам’ять. Сегменти. Сторінковий механізм.
- •Адресний простір процесів. Керування пам’яттю процесу.
- •Планування виконання процесі. Обробка переривань таймеру. Відкладений виклик. Аларми. Контекст процесу.
- •Архітектура віртуальної фс. Віртуальні індексні дескриптори. Монтування фс.
- •Архітектура віртуальної фс. Трансляції імен. Доступ до фс. Файлова таблиця.
- •Архітектура віртуальної фс. Блокування доступу до файлу.
2. Властивості та класифікація процесів. Життєвий цикл процесу.
Процес — об'єкт операційної системи, контейнер системних ресурсів, призначених для підтримки виконання програми. Коли в середовищі операційної системи запускається прикладна програма, система створює спеціальний об’єкт – процес, – який призначений для підтримки її виконання. Хоча може здатися, що програма й процес – поняття схожі, вони фундаментально відрізняються. Програма – це статичний набір команд, а процес – контейнер для ресурсів, які використовуються при виконанні екземпляра програми. Системна реалізація та функції процесу в різних операційних системах дещо відмінні.
Інтервал часу поміж породженням процесу та його завершенням називається інтервалом існування процесу.
У момент породження послідовність та тривалість перебування процесу в кожному зі своїх станів (траса процесу) є невизначеними, так само, як і тривалість інтервалу існування. Процеси реального часу потребують такого планування, щоби гарантувати завершення процесу до конкретного моменту. Інтерактивні процеси мають мати інтервал існування не більший, аніж припустима реакція обчислювальної системи на запитання користувача. Решта процесів називають пакетними.
У будь-якій ОС за вимоги існуючого процесу чи процесу, що існував, може бути породжено новий процес. Процес, який задає вимогу, називають породжуючим, а створений за вимогою – породженим. Породжений процес на інтервалі свого існування, своєю чергою, може видати вимогу на породження іншого процесу.
При керуванні процесами важливим є забезпечення відтворювання результатів процесу за його багаторазового повторювання, керування ситуацією при розвиненні процесу. ОС має порівнювати процеси за їхними динамічними якостями. Порівняння провадиться за поняттям “траса” – послідовність та тривалість перебування процесу у дозволених станах на інтервалі існування.
Два процеси, які мають однаковий кінцевий результат опрацювання однакових даних за одною або навіть за різними програмами на одному або на різних процесорах, називають еквівалентними. У загальному випадку траси еквівалентних процесів не збігаються.
Якщо в кожному з еквівалентних процесів опрацювання даних відбувається за однією програмою, але траси не збігаються, то такі процеси називають тотожними.
За збігання трас у тотожних процесів їх називають рівними.
Якщо інтервали двох процесів не перемежаються під час виконання, то такі процеси називають послідовними один відносно другого.
Якщо на розглядуваному інтервалі часу існують одночасно два процеси, то вони на цьому інтервалі є паралельними один відносно другого.
Якщо на інтервалі часу є хоча б одна точка, в якій існує один процес, але не існує другий, і хоча б одна точка, де обидва процеси існують одночасно, то такі два процеси називають комбінованими.
В ОС процеси розрізнюють за місцем їхнього розвинення, тобто за тим, на якому з процесорів, у широкому розумінні, виконується програма процесу. На центральному процесорі розвиваються процеси, які називаються програмними або внутрішніми. Процеси, розвинення яких відбувається під контролем або керуванням ОС на процесорах, які не є центральними, називаються зовнішніми. Це, наприклад, процеси введення/виведення, які розвиваються в каналі, це також діяльність оператора, який обслуговує обчислювальну систему та спілкується з ОС, а також діяльність будь-якого користувача.
При розвиненні системного процесу виконується програма зі складу операційної системи. При розвиненні користувацького процесу виконується користувацька програма.
Процеси, незалежно від їхнього виду, можуть бути ізольованими або взаємопов’язаними, якщо поміж ними за допомогою системи керування процесами підтримуються функціональні, просторово-часові, керувальні чи інформаційні зв’язки. Строго кажучи, ізольовані процеси треба розглядати як процеси зі слабкими зв’язками, оскільки за відсутності наочних зв’язків вони можуть бути пов’язані поміж собою непрямо і впливати на розвинпння один одного. Наприклад, процес введення інформації через канал з певного зовнішнього пристрою може впливати на темп розвинення іншого внутрішнього процесу, в жлдній спосіб непов’язаного з даними, які вводяться, оскільки змінить склад траси внутрішнього процесу та збільшить інтервал його існування.
Взаємопов’язані процеси, які використовують спільно деякі ресурси, але не обмінюються інформацією, називаються інформаційно незалежними. Зв’язок поміж такими процесами може бути або функціональним або просторово-часовим. За наявності інформаційних зв’язків поміж двома процесами їх називають взаємодіючими. Взаємопов’язані за ресурсами процеси називаються конкуруючими.
Керування взаємопов’язаними процесами у складі ОС ґрунтується на низці обмежень, які регламентуються синхронізуючими правилами.
Відносини передування для двох процесів означають, що перший процес має переходити до активного стану завжди раніше за другого.
Відносини пріоритетності означають, що процес з пріоритетом Р може бути переведено до активного стану лише за при виконання двох умов:
у стані готовності до процесора немає процесів з більшим пріоритетом;
процесор є вільний або його використовує процес з меншим, ніж Р, пріоритетом.
Відносини взаємного вилучення стосуються ситуації, коли два процеси використовують спільний ресурс. Сукупність дій одного процесу над цим ресурсом називається критичною областю. За правилом, критична область одного процесу не повинна виконуватись в одночас з критичною областю у складі іншого процесу.
Багатозадачні ОС мають відповідні механізми й засоби, які враховують наведені властивості процесів при керуванні ними.
Найважливішою складовою частиною процесу є потік. Процес як системний об'єкт призначений для "обслуговування" потоків. Сам по собі процес не виконує ніяких дій, для цього призначений потік. Крім закритого адресного простору й одного або кількох потоків, у кожного процесу є ідентифікатор захисту і список відкритих дескрипторів об'єктів (файли, розділи загальної пам'яті), або синхронізуючих об'єктів – м’ютексів, подій і семафорів. Кожен процес має контекст захисту, який зберігається в об'єкті – маркері доступу. Маркер доступу містить ідентифікацію захисту й визначає повноваження даного процесу. Дескриптори віртуальних адрес(virtual address descriptors, VAD) – це структури даних, які використовуються диспетчером пам'яті для обліку віртуальних адрес, задіяних процесом.
Кожному процесу мають бути виділені певні системні ресурси, зокрема:
процесор
пам'ять
доступ до пристроїв вводу-виводу
Кожен процес має «батька» (батьківський процес). Він також може мати (але не обов'язково) «нащадків» (дочірні процеси). В сукупності вони формують дерево процесів.Керування процесами здійснює ядро операційної системи.
Процес має певний пріоритет, який впливає на кількість процесорного часу, який виділятиметься його потокам. У Windows кожен процес має один із таких класів пріоритету:
IDLE_PRIORITY_CLASS,
BELOW_NORMAL_PRIORITY_CLASS,
NORMAL_PRIORITY_CLASS,
ABOVE_NORMAL_PRIORITY_CLASS,
HIGH_PRIORITY_CLASS,
REALTIME_PRIORITY_CLASS.
Під час запуску процесу проходять такі стадії:
користувач з допомогою вказує програму, яку потрібно виконати
операційна система створює адресний простір для процесу і структури, які описують новий процес
заповнюються структури, які описують новий процес
з файлу, який містить виконавчий файл, в адресний простір процесу копіюються код і дані
встановлюється стан процесу «готовий до виконання»
новий процес додається до черги процесів, які очікують на процесор
керування повертається оболонці користувача
Доступ до процесу
Якщо необхідно працювати із зовнішнім процесом, потрібно спочатку відкрити дескриптор об’єкта процесу за допомогою функції OpenProcess. Ця функція за відомим ідентифікатором процесу повертає його дескриптор, який може використовуватися для маніпуляцій над процесом.
Завершення роботи процесу
Процес та його життєвий цикл
Екземпляр програми, яка в даний момент виконується на комп'ютері, називають процесом. Поняття процесу має кілька складових. По перше, це потік виконання команд який реалізує алгоритм програми. По друге — багаторазові (повторно використовні) ресурси, що виділені процесу. Це процесорний час, оперативна та віртуальна пам'ять, канали вводу-виводу, відкриті файли та резервовані ресурси зовнішніх пристроїв. По третє — вміст регістрів процесора та значення внутрішніх змінних програми які разом визначають внутрішній стан процесу. Нарешті, це значення зовнішніх відносно процесу змінних, які ідентифікують процес та виділені йому ресурси і фіксують стан процесу з точки зору ОС. Ці змінні зазвичай є елементами оперативних структур даних ОС.
Життєвий цикл кожного процесу можна відобразити в вигляді діаграми на якій
позначені стани процесу та можливі переходи між ними. На рис. 3.1 приведена діаграма станів процесів в гіпотетичній ОС.
Розглянемо особливості кожного стану. “Новий” процес (I) створюється ОС (можливо за “дорученням” іншого процесу) для виконання певної програми. При цьому ОС створює та розміщує в пам'яті структури даних, що ідентифікують процес, зберігають інформацію про його стан та містять інформацію необхідну для управління процесом. Ці три типи інформаційних структур об'єднуються терміном управляючий блок процесу (process control block – PCB). Крім того ОС повинна розмістити в пам'яті код програми і дані та виділити пам'ять для стеків які використовуються для викликів процедур. Разом PCB, пам'ять (точніше адресний простір — список адрес елементів пам'яті від деякої мінімальної до максимальної, до яких процес має доступ) програми, стеки і, можливо, сумісно використовуваний кількома процесами адресний простір складають контекст
образу процесу. Якщо наявних в даний момент ресурсів в системі достатньо для виконання вищезгаданого то процес переходить в стан “готовий” до виконання (II). Коли ж ресурсів (в першу чергу пам'яті) недостатньо, процес призупиняється доки не з'явиться можливість їх виділення. При цьому ОС використовує механізм свопінгу (жарг. “підкачка”) для переміщення образу процесу на диск, а при вивільненні ресурсів — зворотного переміщення в оперативну пам'ять і, таким чином, переводить процес із стану “готовий / призупинений” (VI) в “готовий” (переходи 8, 9).
Всі готові до виконання процеси знаходяться в упорядкованій черзі і час від часу переводяться диспетчером (компонентом ОС що реалізує почергове надання процесам процесорного часу) в стан “виконується” (III). Цей механізм ще називають перемиканням процесів. При цьому процес отримує в своє розпорядження центральний процесор, який виконує програму до завершення виділеного кванту часу, або до запиту процесом обслуговування зі сторони ОС, результати якого не можуть бути отримані в межах поточного кванту часу. Наприклад, операція вводу даних в програмі на мові програмування високого рівня транслюється компілятором в виклик відповідного сервісу ОС (системний виклик) і наперед ніколи невідомо, коли після початку операції вводу дані будуть реально доступні в програмі. Тому диспетчер вивільняє процесор і переводить
процес в стан “блокований” (V). В цьому стані процес буде перебувати до приходу
асинхронного повідомлення (час приходу якого невідомий) про те, що очікувані дані вже доступні всередині ОС і операція вводу може бути завершена. Це повідомлення обробляється ОСяка і переводить процес в стан готового до виконання.
Якщо в блокованому стані знаходиться досить багато процесів і є процеси в стані “готовий / призупинений”, то ОС може перерозподілити ресурси таким чином, щоб перевести деякі процеси із стану “готовий / призупинений” в стан “готовий” за рахунок вивантаження на диск частини блокованих процесів. Останні при цьому до моменту настання очікуваної подіїзнаходитимуться в стані “блокований / призупинений” (VII).
Оскільки блоковані і блоковані / призупинені процеси очікують настання асинхронних подій — їх черги неупорядковані, тоді як черги готових та готових / призупинених упорядковані. Тип упорядкування для різних черг може бути різним і визначається стратегією планування (загальним планом діяльності, що охоплює
тривалий період часу як спосіб досягнення складної мети, в даному випадку — максимальної продуктивності системи) і диспетчеризації процесів, яку реалізує дана ОС. Результатом завершення виконання програми є перехід процесу із стану виконання в стан “завершується” (IV). Це не обов'язково означає видалення процесу із системи. Часто образ такого процесу містить інформацію необхідну іншим процесам. В цьому випадку частина структур PCB деякий час зберігається і після завершення процесу. В ОС сімейства UNIX такий стан процесу називається зомбі (zombie). І ще кілька загальних зауважень до діаграми на Рис. 3.1. На рисунку зображено всі можливі стани процесу і можливі переходи між ними. Одночасно в кожному стані може знаходитись багато процесів, за винятком стану “виконується” в якому може знаходитись не більше процесів ніж мається процесорів в обчислювальній системі. При цьому частину переходів (1, 2, 6 - 13) ініціює ядро ОС незалежно від тексту програми, що виконується. Перехід (3) як правило примусово виконує диспетчер при закінченні виділеного процесу кванту часу. Це так звана витісняюча багатозадачність (preemptive multitasking) що реалізована в більшості сучасних ОС загального призначення. При кооперативній моделі багатозадачності (cooperative multitasking) процес сам ініціює перехід (3), виконуючи системний виклик звільнення процесора. Перехід (4) відповідає виконанню системного виклику завершення процесу. Він може бути вказаний в програмі явно як виклик процедури або неявно по досягненню кінця програми. Можливий також варіант примусового завершення процесу іншим процесом який має відповідні права.
