Поняття процесу і ресурсу
Процес - абстракція, що описує поточну програму
Процес - сукупність алгоритму, вх і вих даних, ресурсів системи, що знаходяться під управлінням ОС в поточний момент часу
1) За генеалогічним ознаками: батьківські і дочірні
2) За часовими характеристиками: траса процесу-набір станів, які процес послідовно проходить протягом свого життєвого циклу. Якщо траси не перетинаються, то процеси послідовні, інакше паралельні
3) По результативності: Еквівалентні процеси, які отримують з однакових вх даних однакові вих дані в загальному випадку за різними програмами. Тотожні процеси, еквівалентні процеси, що виконуються за однаковими програмами. Рівні, тотожні процеси, траси яких співпадають. Всі інші процеси різні.
4) За зовнішнім хар-кам: паралельні, послідовні.
5) По приналежності до CPU: зовнішні і внутрішні
6) По приналежності до ОС: системні і призначені для користувача
7) За зв'язності: процеси, що обмінюються інфо, називаються взаємодіючими; в іншому випадку - інформаційно незалежними.
Діаграма станів процесу

Г отовность: стан, в якому процесу досить для виконання всіх необхідних ресурсів крім процесорного часу
У иполненіе: стан, в якому в даний момент знаходиться тільки один процес-той, якому виділено процесорний час
Про Жиданів (Б локіровка): стан, в якому процесу не вистачає для виконання будь-яких ресурсів і він чекає якої-небудь події.
Процес надходить в чергу готовим, тому що до виконання коду ресурси не потрібні. Під час виконання, йому можуть знадобитися ресурси, тому він може перейти в режим очікування.
Зі стану В в Г процес може перейти в системах з витісняє плануванням. Невитісняючі планування - системи пакетної обробки.
Контекст і дескриптор процесу.
Контекст процесу складається з призначеного для користувача контексту і контексту ядра.
Контекст ядра включає регістровий контекст. регістр лічильника команд, регістр стану процесора, регістр покажчика стека і регістрів загального призначення; а також контекст системного рівня, пов'язані з цим процесом.
Дані ядра містять таку інф-цію про процес, як: ідентифікатор користувача - UID, груповий ідентифікатор користувача - GID, ідентифікатор процесу - PID, ідентифікатор батьківського процесу - PPID.
У дескрипторі міститься інформація про стан процесу, розташуванні образа процесу в оперативній пам'яті і на диску, про значення окремих складових пріоритету, ідентифікатор користувача, який створив процес, інформація про родинні процесах, про події, здійснення яких очікує даний процес і деяка інша інформація.
За генеалогічним ознаками: батьківський і дочірній.
· Еквівалентні - отримують з однакових вхідних однакові вих. дані в загальному випадку за різними програмами.
· Чи тотожні - еквівалентні, що виконуються за однаковими програмами.
· Рівні - тотожні, траси яких співпадають.
Всі інші різні.
За тимчасовим хар-кам: паралельні і послідовні.
· Процеси обмінюються інфо - взаємодіючі.
· Інакше - інформаційно незалежні.
Поняття потоку. Способи реалізації потоків. Планування потоків.
Потік (_en. Stream) - абстрактна послідовність інструкцій або даних взагалі, прив'язана до відповідного дескриптора (може бути представлений ім'ям потоку).
1. Здатність процесу виконуватися в більш ніж одному потоці команд.
2. Квазімногозадачность в рамках одного процесу.
Переваги використання потоків:
2. Швидкість перемикання між потоками на порядок вище ніж між процесами, за рахунок відсутності необхідності перемикання контекстів.
3. Швидкість створення і видалення потоків теж на порядок вище.
Недоліки: Ускладнення планування потоків і процесів.
Способи реалізації потоків
1) Потоки на рівні ядра
2) Потоки на рівні користувача
3) Змішаний потік (комбінований)
Потоки на рівні користувача.
В ядрі є таблиця процесів, якими воно управляє. Про потоках цих процесів ядро не знає нічого. Планування виробляються для процесів, час виділяється процесом. Процеси на рівня користувача мають свої таблиці потоків. Потоки при виконанні самостійно передають управління один одному.
- така схема може бути реалізована в системі не підтримує багатопоточність;
- потоки всередині кожного процесу можуть використовувати свій алгоритм планування
- переривання від таймера отримує ядро, а не процеси, тому процеси нічого не знають про час виконання своїх потоків. Якщо ядро може за таймером зняти з виконання один процес з виконання і запустити інший, то процеси цього не можуть, тому якщо один потік не передає управління іншим потокам, то примусово змінити потоки не можна
- при виконанні блокуючого виклику, тобто перехід в стан очікування, то в очікування переходить весь процес, незважаючи на те що виклик зробити все одним потоком.
Потоки на рівні ядра
Поряд з таблицею процесів, в ядрі є таблиця потоків. Ядро планує не процеси, а потоки всіх процесів, виділяючи їм кванти часу, завдяки цьому перемикання між потоками відбувається за таймером і тривала робота одного потоку ніяк не впливає на роботу інших потоків. Кожен потік має свій стан, тому при блокирующем виклик до стан очікування переходить тільки цей потік і не впливає на роботу цього та інших потоків.
- не можна реалізувати в системі не підтримує багатопоточність
- часті перемикання між потоків різних процесів призводить до частої зміни контексту процесу, тим самим збільшуючи прикладні витрати на управління
1) Потоки на рівні користувача: при блокирующем виклику переводяться на рівень ядра
Мультиплексування потоків: кожному процесу відповідає кілька потоків ядра, кожному потоку ядра-кілька потоків користувача. Кванти часу виділяються потоком ядра, потоки користувача справляються самі, при блокирующем виклику, в блокування йде весь потік ядра з декількома потоками користувача, але інші потоки цього процесу продовжують виконання.
Однією з основних підсистем мультипрограммной ОС, що безпосередньо впливає на функціонування обчислювальної машини, є підсистема управління процесами і потоками, яка займається їх створенням і знищенням, підтримує взаємодію між ними, а також розподіляє процесорний час між декількома одночасно існуючими в системі процесами і потоками.
Підсистема управління процесами і потоками відповідальна за забезпечення процесів необхідними ресурсами. ОС підтримує в пам'яті спеціальні інформаційні структури, в які записує, які ресурси виділені кожному процесу. Вона може призначити процесу ресурси в одноосібне користування або в спільне користування з іншими процесами. Деякі з ресурсів виділяються процесу при його створенні, а деякі - динамічно за запитами під час виконання. Ресурси можуть бути приписані процесу на весь час його життя або тільки на певний період. При виконанні цих функцій підсистема управління процесами взаємодіє з іншими підсистемами ОС, відповідальними за управління ресурсами, такими як підсистема управління пам'яттю, підсистема вводу-виводу, файлова система.
Коли в системі одночасно виконується кілька незалежних завдань, то виникають додаткові проблеми. Хоча потоки виникають і виконуються асинхронно, у них може виникнути необхідність у взаємодії, наприклад при обміні даними. Узгодження швидкостей потоків також дуже важливо для запобігання ефекту «гонок» (коли кілька потоків намагаються змінити один і той же файл), взаємних блокувань або інших колізій, які виникають при спільному використанні ресурсів. Синхронізація потоків є однією з важливих функцій підсистеми управління процесами і потоками.
Кожен раз, коли процес завершується, ОС робить кроки, щоб «зачистити сліди» його перебування в системі. Підсистема управління процесами закриває всі файли, з якими працював процес, звільняє області оперативної пам'яті, відведені під коди, дані і системні інформаційні структури процесу. Виконується корекція всіляких черг ОС і списків ресурсів, в яких були посилання на завершується процес.
8. Планування і диспетчеризація процесів. Стратегії планування.
Однією з важливих задач, яку вирішує ОС є проблема, пов'язана з визначенням коли і яким процесам слід виділяти ресурси процесора - завдання планування завантаження процесорів.
Планування - це організація процесів в деяку послідовність, згідно заданої стратегії.
Планувальник - це програма, відповідальна за постановку процесів в чергу-на-виконання і керуюча цією чергою.
3 рівня планування:
1. Довгострокове планування - вибір процесу на запуск системи.
2. Короткострокове планування (диспетчеризація) - визначає поведінку системи найближчим часом аж до декількох тиків таймера.
3. Середньостроковий - вибір процесу, який може бути вивантажений у вторинну пам'ять з наступним поверненням в оперативну.
Витісняють планування - в системі є можливість повернення процесу з виконання безпосередньо в готовність.
Невитісняючі планування - з виконання можна перейти тільки в очікування.
Планування проводиться в вимушених і невимушених випадках:
1. виконує процес завершив роботу і покинув систему
2. виконує процес перейшов в стан очікування
3. Надходження нового процесу в чергу готовності
4. Закінчення кванта часу виконується процесу
Невитісняючі планування - тільки в вимушених випадках.
Діспетчерізація- почергове виділення планувальником операційної система процесам квантів процесорного часу.
Планування в системах пакетної обробки даних. Дисципліни FCFS, SJN, SNR.
Використовуються такі алгоритми:
FCFS (першим прийшов першим обслужився)
Процесам надається доступ до процесора в тому порядку, в якому вони його запитують. Найчастіше формується єдина чергу чекають процесів. Як тільки з'являється перша задача, вона негайно запускається і працює стільки, скільки необхідно. Решта завдання ставляться в кінець черги. Коли поточний процес блокується, запускається наступний в черзі, а коли блокування знімається, процес потрапляє в кінець черги.
Основною перевагою цього алгоритму є те, що його легко зрозуміти і настільки ж легко програмувати. Він справедливий в тому ж самому сенсі, в якому справедливо розподіл дефіцитних квитків на концерт або змагання серед всіх бажаючих стояти в черзі з другої години ночі. У цьому алгоритмі всі процеси в стані готовності контролюються одним зв'язковим списком. Щоб вибрати процес для запуску, потрібно всього лише взяти перший елемент списку і видалити його. Поява нового процесу призводить до приміщення його в кінець списку - що може бути простіше
Переваги. простота реалізації
Недоліки. Алгоритм дуже сильно залежимо від вхідних донних, тобто ефективність роботи системи сильно залежить від порядку надходження процесів в систему. Якщо спочатку виконуються тривалі процеси, то коротким процесам доведеться довго чекати їх завершення, значить, збільшується час очікування і час обороту. Якщо спочатку виконуються короткі, то час очікування значно зменшиться
SJN (Shortest Job Next)
З черги готовності на виконання вибирається той процес, якому необхідно для виконання найкоротший термін.
Алгоритм близький до оптимального
Реалізуємо, оскільки в момент вибору процесу з черги невідомо скільки часу цього процесу в майбутньому знадобитися для виконання.
SRN (Shortest remain next)
Модифікація алгоритму SJN c витісненням виконується процесу в разі надходження в систему нового процесу, якому необхідно для виконання менше часу, ніж залишилося виконатися поточному.
За рахунок можливості витіснення короткі процеси не будуть чекати довго незалежно від моменту надходження в систему.
Реалізуємо, оскільки в момент вибору процесу з черги невідомо скільки часу цього процесу в майбутньому знадобитися для виконання.
10. Планування в інтерактивних системах. Дисципліна RR (круговий планування), дисципліни пріоритетного планування.
RR - Round Robin. Це витісняє алгоритм, при якому всі процеси по черзі отримують кванти процесорного часу і після закінчення яких йдуть в кінець черги. Якщо квант часу великий, то RR вироджується в FCFS так як процес встигає завершитися за свій квант часу. Чим менше квант часу, тим ближче RR до оптимального, але збільшується час, необхідний на перемикання між процесами.
Пріоритетне планування. Пріоритет це число, яке визначає ступінь привілейованості цього процесу щодо інших. Пріоритет абсолютний, якщо надійшов більш пріоритетний процес може витіснити з виконання процес з меншим пріоритетом. Пріоритет відносний, якщо надійшов процес встане в початок черги, але дочекається виконання поточного. Пріоритети можуть змінюватися протягом життєвого циклу.
Планування в системах реального часу.
Алгоритми планування роботи систем реального часу можуть бути статичними або динамічними. Перший з них передбачає прийняття рішень з планування ще до запуску системи, а другий - їх прийняття в реальному масштабі часу. Статична планування працює тільки за умови попереднього володіння достовірною інформацією про виконувану роботу і про крайні терміни, які потрібно дотримати. Алгоритми динамічного планування подібних обмежень не мають.
Алгоритм 1: RMS - статичний алгоритм планування реального часу. Використовується поняття дедлайн - момент часу, до якого має бути оброблено подія. Якщо подія не оброблено до настання свого дедлайну, то алгоритм терпить крах. Пріоритети процесів пропорційні частоті надходження їх подій.
Алгоритм 2: EDF - динамічний алгоритм. На виконання вибирається той процес, у якого вище дедлайн. На сильно завантажених системах, статичний алгоритм може не справлятися з плануванням, в той час як динамічний може навіть періодично дати системі простоювати.