
- •1. Основні складові системного програмного забезпечення.
- •2. Охарактеризуйте узагальнену структуру програмного забезпечення обчислювальних систем.
- •3. Типова структура системного програмного забезпечення.
- •4. Основні функції операційної системи.
- •5. Охарактеризуйте основні типи операційних систем.
- •1. За призначенням.
- •4. За способом побудови
- •6. Основні концепції побудови операційних систем.
- •7. Класифікація ос, за призначенням.
- •8. Класифікація ос, за режимом обробки задач.
- •9. Класифікація ос, за способами взаємодії із системами.
- •10. Класифікація ос, за способами побудови.
- •11. Охарактеризуйте підсистему керування ресурсами.
- •12. Охарактеризуйте підсистему керування введенням-виведенням.
- •13. Охарактеризуйте підсистему керування файлами та файлові системи.
- •14. Призначення та особливості ядра операційної системи
- •15. Основні функції ядра операційної системи.
- •16. Основні види архітектури операційних систем.
- •17. Операційні системи з монолітним ядром.
- •18. Багаторівневі операційні системи.
- •19. Операційні системи з мікроядром.
- •20. Концепція віртуальних машин в побудові операційних систем.
- •21. Засоби апаратної підтримки операційних систем
- •22. Інтерфейс прикладного програмування.
- •23. Варіанти реалізації інтерфейсу прикладного програмування
- •24. Особливості базової архітектури ос unix.
- •25. Призначення ядра ос Linux та його особливості
- •26. Концепція модулів ядра в ос Linux
- •27. Основні компоненти архітектури ос Windows
- •28. Призначення рівня абстрагування від апаратури в ос Windows
- •29. Основні компоненти підсистеми виконання в ос Windows
- •30. Об’єктна модель архітектури ос Windows
- •31. Розкрийте поняття „обчислювальний процес”.
- •32. Основні стани обчислювального процесу.
- •33. Умови переходу обчислювального процесу із стану в стан.
- •34. Призначення та основні функції блоку керування процесами (pcb).
- •35. Потоки („нитки”), призначення та застосування.
- •36. Поняття „переривання” та їх призначення.
- •37. Основні групи „переривань” та події, що їх викликають
- •38. Обробка „переривань” та механізм перемикання контексту „переривань”.
- •39. Механізми, що використовуються для планування процесорів
- •40. Інтервальний таймер, призначення та застосування у плануванні процесорів
- •41. Пріоритети, призначення та застосування у плануванні процесорів.
- •42. Планування процесорів за принципом fifo
- •43. Циклічне планування завантаження процесорів
- •44. Планування завантаження процесорів за принципом „найкоротше завдання-перший”.
- •45. Планування завантаження процесорів за „найменшим часом, що залишився”.
- •46. Планування процесорів із використанням багаторівневих черг зі зворотними зв’язками.
- •47. Витісняючі та невитісняючі алгоритми планування процесів.
- •48. Рівні планування процесів
- •49. Задачі, що вирішуються на кожному з рівнів планування процесів.
- •50. Основні вимоги до планування процесов.
- •51. Планування процесів з переключенням та без переключення.
- •52. Особливості процесів в ос unix.
- •53. Недоліки традиційної багато потоковості в Linux.
- •54. Особливості нової реалізації багато потоковості в Linux.
- •55. Особливості планування процесів у ос Windows
- •56. Створення потоків у ос Windows
- •57. Особливості планування потоків у ос Windows.
- •58. Планування потоків у ос Windows: пріоритети.
- •59. Планування потоків у ос Windows: вибір кванту часу.
- •60. Планування потоків у ос Windows: динамічна зміна пріоритету та кванту часу.
52. Особливості процесів в ос unix.
Ядро UNIX існує для виконання потреб процесів. З точки зору процесів, ядро це витрати, з якими треба миритись. З точки зору ядра, процеси – це каталогізовані структури даних, над якими за певними правилами виконуються маніпуляції.
Процес – це програма під час виконання в деякий момент часу довільної програми може відповідати один або декілька процесів, або не відповідати жодний. Процес – це об’єкт, що враховується в спеціальній таблиці ядра системи.
Найбільш важлива інформація про процес зберігається в двох місцях:
- в таблиці процесів;
- в таблиці користувача (контекст процесу).
Перша – завжди знаходиться в пам’яті і містить на кожний процес по одному елементу, в якому відображається точний стан процесу:
– розташування процесу (адреса в пам’яті або адреса свопінгу);
– розмір;
– ідентифікатори процесу;
– ідентифікатори користувача що запустив процес.
Менш актуальна інформація про процес зберігається в таблиці користувача. Така таблиця існує для кожного активного процесу і тільки до неї можуть безпосередньо звертатись програми ядра. При всіх ситуаціях, що виникають при виконанні процесу, відбувається звертання до його таблиці. Створення процесу включає ініціалізацію відповідного контексту та сегмента таблиці процесів а також формування даних та тексту цього процесу. Зміна стану (виконання, очікування, повернення в пам’ять та інше) та отримання стану від паралельного процесу – все це фіксується в таблиці процесів.
Якщо процес складається з чистих машинних кодів (дані існують окремо), то структура даних буде наступна.
Після завершення деякого процесу відповідний елемент таблиці звільняється для того, щоби потім його використовували для інших процесів.
Таблиця процесів резидентна в основній пам’яті, що забезпечує ядру можливість реагувати на зміни стану процесу, що тимчасово зберігається на диску. Ядро резервує по одному контексту на кожний активний процес. В цій таблиці інформація, що необхідна під час виконання процесу. Якщо процес призупинено, контекст стає недоступним та не модифікованим. Окрім того, оскільки ця структура даних є складовою частиною області даних кожного процесу, то при виконанні свопінгу переписується на диск разом з усім образом процесу.
Біжуча інформація про процес в основному вміщується в його контексті. Сюди записуються:
– ідентифікаційні номера користувача і групи, що призначені для визначення привілеїв доступу до файлів;
– посилання на системну таблицю файлів для всіх відкритих процесом файлів;
– покажчик на індексний дескриптор біжучого каталогу в таблиці індексних дескрипторів;
– список реакцій на різні сигнали.
Для створення нових, існуючі процеси використовують два основних механізми:
Fork – системний виклик (команда) для створення процесом своєї власної копії; це єдиний спосіб для збільшення числа процесів; після його виконання є два процеси, породжуючий (батьківський, джерело) та породжений (дочірній, приймач).
Exec – для перетворення процесу, що ініціював цей системний виклик. У цьому випадку міняється не кількість процесів, а їх якість.
Звичайно для створення дочірнього процесу з новим ідентифікатором послідовно викликають fork, а потім exec. Саме в такий спосіб запускаються інтерпретатори shell та довільна викликана програма. Пара fork–exec, як правило, працює разом із системним викликом wait. Wait дозволяє процесу–батьку дочекатись завершення породженого ним процесу