Що таке процес ос чим він відрізняється від програми що таке нитка які є підходи до створення
Процес розглядається операційною системою як заявка на споживання всіх видів ресурсів, крім одного - процесорного часу. Цей останній найважливіший ресурс розподіляється операційною системою між іншими одиницями роботи - потоками, які і отримали свою назву завдяки тому, що вони являють собою послідовності (потоки виконання) команд.
Хоча на перший погляд здається, що програма і процес поняття практично однакові, вони фундаментально відрізняються один від одного. Програма представляє собою статичний набір команд, а процес це набір ресурсів і даних, що використовуються при виконанні програми.
8. Опишіть життєвий цикл процесу. Які вимоги зазвичай висуваються до алгоритмів планування процесів?

Життєвий цикл процесу зображений на Рис. 2-1. Процес може створити новий процес, який є копією вихідного процесу за допомогою системного виклику fork. Повернення з виклику fork відбувається два рази: один раз в батьківському процесі, в якому повертається значення є ідентифікатором породженого процесу, і другий раз в породженому процесі, в якому повертається значення дорівнює 0. Зв'язок батько-нащадок породжує ієрархічну структуру процесів в системі. Новий процес має доступ до всіх ресурсів його батька, таким, як файлові дескриптори, стан обробки сигналів і розподіл пам'яті.
Хоча є ситуації, коли процес повинен бути копією свого батька, найбільш типовим і корисною дією є завантаження і виконання іншої програми. Процес може замістити себе чином пам'яті іншої програми, передаючи новоствореному образу набір параметрів, за допомогою системного виклику execve. Одним з параметрів є ім'я файлу, вміст якого має форматі, розпізнається системою - це або двійковий виконуваний файл, або файл, який призводить до запуску зазначеної програми інтерпретації для обробки його вмісту.
Процес може завершити роботу, виконавши системний виклик exit, який посилає 8-бітове значення стану завершення свого батька. Якщо процес хоче передати батьківського процесу інформацію, що перевищує один байт, він повинен або створити канал межпроцессной комунікацій за допомогою конвеєрів або сокетів, або за допомогою проміжного файлу.
Процес може призупинити виконання до тих пір, поки не завершить роботу будь-якої з породжених їм процесів, за допомогою системного виклику wait, який повертає PID і статус завершення виконаного дочірнього процесу. Батьківський процес може бути налаштований на отримання сигналу в разі, коли породжений процес завершує роботу або аварійно припиняє виконання. За допомогою системного виклику wait4 батько може отримати інформацію про подію, що привів до завершення породженого процесу і про ресурси, використаних процесом за час його роботи. Якщо процес стає сиротою через те, що процес, його породив, завершив роботу до закінчення роботи нащадка, то ядро перенаправляє стан завершення породженого процесу особливому системного процесу init.
Критерії планування і вимоги до алгоритмів
Для кожного рівня планування процесів можна запропонувати багато різних алгоритмів. Вибір конкретного алгоритму визначається класом завдань, що вирішуються обчислювальної системою, і цілями, яких ми хочемо досягти, використовуючи планування. До числа таких цілей можна віднести наступні:
Справедливість - гарантувати кожного завдання або процесу певну частину часу використання процесора в комп'ютерній системі, намагаючись не допустити виникнення ситуації, коли процес одного користувача постійно займає процесор, в той час як процес іншого користувача практично не починав виконуватися.
Ефективність - постаратися зайняти процесор на всі 100% робочого часу, не дозволяючи йому простоювати в очікуванні процесів, готових до виконання. У реальних обчислювальних системах завантаження процесора коливається від 40 до 90%.
Скорочення повного часу виконання (turnaround time) - забезпечити мінімальний час між стартом процесу або постановкою завдання в чергу для завантаження і його завершенням.
Скорочення часу очікування (waiting time) - скоротити час, який проводять процеси в стані готовність і завдання в черзі для завантаження.
Скорочення часу відгуку (response time) - мінімізувати час, який потрібен процесу в інтерактивних системах для відповіді на запит користувача.
Незалежно від поставлених цілей планування бажано також, щоб алгоритми володіли такими властивостями:
Були передбачуваними. Одне і те ж завдання має виконуватися приблизно за один і той же час. Застосування алгоритму планування не повинно призводити, наприклад, до вилучення квадратного кореня з 4 за соті частки секунди при одному запуску і за кілька діб - при другому запуску.
Були пов'язані з мінімальними накладними витратами. Якщо на кожні 100 мілісекунд, виділені процесу для використання процесора, припадатиме 200 мілісекунд на визначення того, який саме процес отримає процесор в своє розпорядження, і на перемикання контексту, то такий алгоритм, очевидно, застосовувати не варто.
Рівномірно завантажували ресурси обчислювальної системи. віддаючи перевагу тим процесам, які будуть займати маловикористовувані ресурси.
Володіли масштабністю. т. е. не відразу втрачали працездатність при збільшенні навантаження. Наприклад, зростання кількості процесів в системі в два рази не повинен призводити до збільшення повного часу виконання процесів на порядок.
Багато з наведених вище цілей і властивостей є суперечливими. Покращуючи роботу алгоритму з точки зору одного критерію, ми погіршуємо її з точки зору іншого. Пристосовуючи алгоритм під один клас задач, ми тим самим дискримінуємо завдання іншого класу.
9. Перерахуйте основні алгоритми планування процесів. Сформулюйте алгоритм "Карусель" (Round Robin) і охарактеризуйте його. Наведіть простий приклад. У яких системах він може застосовуватися на практиці?
Існує досить великий набір різноманітних алгоритмів планування, які призначені для досягнення різних цілей і ефективні для різних класів задач. Багато з них можуть використовуватися на декількох рівнях планування.
· First-Come, First-Served (FCFS) FCFS за першими літерами його англійської назви - First-Come, First-Served (першим прийшов, першим обслужений).
· Round Robin (RR) Модифікацією алгоритму FCFS є алгоритм, який отримав назву Round Robin (Round Robin - це вид дитячої каруселі в США) або скорочено RR.
· Shortest-Job-First (SJF) Даний алгоритм отримав назву "найкоротша робота першої" або Shortest Job First (SJF).
· Багаторівневі черги (Multilevel Queue)
· Багаторівневі черги зі зворотним зв'язком (Multilevel Feedback Queue)
Round Robin (RR).
Модифікацією алгоритму FCFS є алгоритм, який отримав назву Round Robin (Round Robin - це вид дитячої каруселі в США) або скорочено RR. По суті справи це той же самий алгоритм, тільки реалізований в режимі витісняє планування. Можна уявити собі все безліч готових процесів організованим циклічно - процеси сидять на каруселі. Карусель обертається так, що кожен процес перебуває близько процесора невеликий фіксований квант часу, зазвичай 10 - 100 мілісекунд (див. Рисунок 3.4.). Поки процес знаходиться поруч з процесором, він отримує процесор в своє розпорядження і може виконуватися.

Реалізується такий алгоритм так само, як і попередній, за допомогою організації процесів, що знаходяться в стані готовність, в чергу FIFO. Планувальник вибирає для чергового виконання процес, розташований на початку черги, і встановлює таймер для генерації переривання після закінчення певного кванта часу. При виконанні процесу можливі два варіанти:
· Час безперервного використання процесора, що вимагається процесу, (залишок поточного CPU burst) менше або дорівнює тривалості кванта часу. Тоді процес по своїй волі звільняє процесор до закінчення кванта часу, на виконання вибирається новий процес з початку черги і таймер починає відлік кванта заново.
· Тривалість залишку поточного CPU burst процесу більше, ніж квант часу. Тоді після закінчення цього кванта процес переривається таймером і поміщається в кінець черги процесів готових до виконання, а процесор виділяється для використання процесу, що знаходиться в її початку.
10. Перерахуйте основні алгоритми планування процесів. Сформулюйте і охарактеризуйте алгоритм "Черга" (FIFO). Наведіть простий приклад. У яких системах він може застосовуватися на практиці?
Існує досить великий набір різноманітних алгоритмів планування, які призначені для досягнення різних цілей і ефективні для різних класів задач. Багато з них можуть використовуватися на декількох рівнях планування.
· First-Come, First-Served (FCFS) FCFS за першими літерами його англійської назви - First-Come, First-Served (першим прийшов, першим обслужений).
· Round Robin (RR) Модифікацією алгоритму FCFS є алгоритм, який отримав назву Round Robin (Round Robin - це вид дитячої каруселі в США) або скорочено RR.
· Shortest-Job-First (SJF) Даний алгоритм отримав назву "найкоротша робота першої" або Shortest Job First (SJF).
· Багаторівневі черги (Multilevel Queue)
· Багаторівневі черги зі зворотним зв'язком (Multilevel Feedback Queue)