
- •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: динамічна зміна пріоритету та кванту часу.
53. Недоліки традиційної багато потоковості в Linux.
Основи підтримки багатопотоковості в ядрі Linux не зазнали принципових змін від появи системного виклику сlone(). За цей час Linux із експериментальної сис теми перетворився на систему промислового рівня, в якій виконують корпора тивні застосування в цілодобовому режимі з великим навантаженням. Таке використання системи висунуло до реалізації багатопотоковості вимоги високої надійності та масштабованості. Стало очевидно, що реалізація, заснована на системному виклику сlone(), цим вимогам не відповідає. Назвемо деякі причи ни цієї невідповідності.
• Оскільки потоки, створені за допомогою сlоnе(), фактично були процесами, що спільно використовують ресурси, створення кожного потоку збільшувало кількість процесів у системі.
• Кожний потік у системі, будучи за своєю суттю процесом, мав власний іден тифікатор процесу (pid), що не відповідало стандарту POSIX. Крім того, якщо потік створював інший потік, між ними виникав зв'язок ≪предок-нащадок≫, тоді як всі потоки мають бути рівноправними.
• Кожне багатопотокове застосування користувача обов'язково створювало до датковий потік (потік-менеджер), який відповідав за створення та знищення потоків і перенаправляв їм сигнали. Наявність такого потоку знижувала на дійність і масштабованість системи (наприклад, у разі аварійного завершення потоку-менеджера застосування залишалося у невизначеному стані).
Усі ці фактори робили багатопотоковість у Linux швидше цікавим полем для експериментів, аніж реальним засобом підвищення продуктивності й масштабованості застосувань. Розв'язати всі проблеми шляхом усунення недоліків сlone() і LinuxThreads виявилося неможливим, потрібне було повне перероблення засобів реалізації багатопотоковості в ядрі та створення нової бібліотеки підтримки потоків.
54. Особливості нової реалізації багато потоковості в Linux.
Спроби удосконалити реалізацію багатопотоковості у ядрі системи, а також бібліо теку підтримки потоків, яка використовує нові можливості ядра, описані в літера турі [67]. Нова реалізація багатопотоковості у ядрі системи має такі особливості.
• Підвищилася продуктивність операції створення і завершення потоків. Знято обмеження на загальну кількість потоків у системі. Система залишається ста більною за умов одночасного створення і завершення сотень тисяч потоків (за наявності достатнього обсягу оперативної пам'яті)
• Усі потоки процесу тепер повертають один і той самий ідентифікатор (pid), крім того, зв'язок ≪предок-нащадок≫міжниминепідтримується (уствореногопотокузберігаєтьсятойсамийпредок, щойупотоку-творця). Якпроцес у системі реєструють тільки початковий потік застосування.
• Реалізацію виклику сlone() розширено таким чином, щоб зробити непотрібним потік-менеджер.
Сьогодні нові засоби інтегровані у тестову версію ядра. Доступна також онов лена реалізація бібліотеки потоків, яка дістала назву NPTL (Native POSIX Threads library).
Бібліотека підтримки потоків NPTL
Бібліотека NPTL призначена для того, щоб, спираючись на нові можливості ядра, забезпечити повну й коректну реалізацію стандарту потоків POSIX для використання у прикладних програмах.
Основною особливістю бібліотеки NPTL є те, що в ній збереглася підтримка схеми багатопотоковості 1:1, внаслідок чого досягається простота та надійність реалізації. При цьому продуктивність і масштабованість забезпечені оновленою підтримкою багатопотоковості у ядрі. Програмний інтерфейс бібліотеки не змінився порівняно з LinuxThreads.