Мікроядерна операційна система

Матеріал з ПІЕ.Wiki

У мікроядерних операційних системах можна виділити центральний когось пактний модуль, що відноситься до супервизорного частини системи. Цей модуль име-ет дуже невеликі розміри і виконує відносно невелика кількість керуючих функцій, але дозволяє передати управління на інші керую-щие модулі, які і виконають затребувану функцію. Микроядро - це мі-мінімальними головна (стрижнева) частина операційної системи, що служить осно-виття модульних і переносяться розширень. Микроядро саме є модулем системного програмного забезпечення, що працює в найбільш пріоритетному стані комп'ютера і підтримує зв'язки з іншою частиною операцион-ної системи, яка розглядається як набір серверних додатків (служб)

У 90-і роки XX століття було досить поширеним переконання, що більшість операційних систем наступних поколінь будуть будуватися як мікроядерний. Однак практика показує, що це не зовсім так. Розробники хочуть мати компактний микроядро, але при цьому включити в нього якомога більше функцій, виконуваних безпосередньо цим програмним модулем. Бо виконання за-вимагати функції іншим модулем, що викликається з мікроядра, призводить і до додаткових затримок, і до додаткових складностей. Більш того, є маса різних думок з приводу того, як слід організовувати служби опе-раціонної системи по відношенню до мікроядра; як проектувати драйвери пристроїв, щоб домогтися найбільшої ефективності, але зберегти функції драйверів максимально незалежними від апаратури; чи слід виконувати опе-рації, що не належать до ядра, в просторі ядра або в просторі користувача; чи варто зберігати програми наявних підсистем (наприклад, UNIX) або краще відкинути все і почати з нуля.

Основна ідея, закладена в технологію мікроядра полягає в тому, щоб створити необхідне середовище верхнього рівня ієрархії, з якої можна легко отримати доступ до всіх функціональних можливостей рівня апаратного забезпечення. При цьому микроядро є стартовою точкою для створення всіх інших модулів системи. Всі ці інші модулі, що реалізують необ-хідні системі функції, викликаються з мікроядра і виконують сервісну роль. При цьому вони отримують статус звичайного процесу або завдання. Можна сказати, що мікроядерна архітектура відповідає технології клієнт-сервер. Імен-но ця технологія дозволяє в більшій мірі і з меншими затратами праці реа-лізованних перераховані вище принципи проектування операційних сис-тем.

Найважливіше завдання розробки мікроядра полягає у виборі базових прими-мотивів, які повинні знаходитися в мікроядрі для забезпечення необхідного і достатнього сервісу. У мікроядрі міститься і виповнюється мінімальну кількість коду, необхідне для реалізації основних системних викликів. В чис-ло цих викликів входять передача повідомлень і організація іншого спілкування між-ду зовнішніми по відношенню до мікроядра процесами, підтримка управління переривань, а також ряд інших вельми нечисленних функцій. Осталь-ні системні функції, характерні для «звичайних» (чи не мікроядерних) опера-ційних систем, забезпечуються як модульні доповнення-процеси, що взаємодіють головним чином між собою і здійснюють взаємодію за допомогою передачі повідомлень.

Для більшості мікроядерних операційних систем основою для такої архі-тектури виступає технологія мікроядра Mach. Ця операційна система була створена в університеті Карнегі Меллон, і багато розробників брали з неї приклад.

Виконувані мікроядром функції обмежені в цілях скорочення його роз-рів і максимізації кількості коду, що працює як прикладна програма. Микроядро включає тільки ті функції, які потрібні в цілях визначенні-ня набору абстрактних середовищ обробки для прикладних програм і організації спільної роботи додатків. В результаті микроядро забезпечує тільки п'ять різних типів сервісів:

  • управління віртуальною пам'яттю;
  • підтримка завдань і потоків;
  • взаємодія між процесами (Inter-Process Communication, IPC);
  • управління підтримкою введення-виведення і переривань;
  • сервіси хоста (host) і процесора.

Інші підсистеми і функції операційної системи, такі як файлові системи, підтримка зовнішніх пристроїв і традиційні програмні інтерфейси, оформляються як системні сервіси або отримують статус звичайних обрабат-ающіх завдань. Ці програми працюють як додатки на мікроядрі.

Із застосуванням концепції декількох потоків виконання на одне завдання мік-роядро створює прикладну середовище, яке забезпечує використання МУЛЬТІПРОМ-цессора; при цьому зовсім не обов'язково, щоб машина була мультипроцессорной: на однопроцессорной машині різні потоки просто виконуються в різний час. Вся підтримка, необхідна для мультипроцесорних машин, сконцентр-рована в порівняно малій і простому мікроядрі.

Завдяки своїм невеликим розмірам і здатності підтримувати інші служби в вигляді звичайних процесів, що виконуються разом з прикладними про-грамами, самі мікроядра простіше, ніж ядра монолітних або модульних операційних систем. З мікроядром супервизорного частина операційної системи розбив-ється на модульні частини, які можуть бути налаштовані через безліч способів, дозволяючи будувати великі системи додаванням частин до менших. Наприклад, кожен апаратно-незалежний нейтральний сервіс логічно відділень-льон і може бути налаштований різними способами. Мікроядра також полегшують підтримку мультипроцессоров створенням стандартної програмної середовища, яка може використовувати кілька процесорів, якщо вони є, проте якщо їх немає, працює на одному. Спеціалізований код для мультипроцессоров обмежений самим мікроядром. Більш того, мережі з спілкуються між собою мік-роядер можуть бути використані для операційної системної підтримки метушні-розкаювана класу масивно паралельних машин.

У деяких випадках використання мікроядерного підходу на практиці сталки-ється з певними складнощами, що проявляється в деякому уповільненні швидкості виконання системних викликів при передачі повідомлень через мікро-ядро в порівнянні з класичним підходом. З іншого боку, можна констатив-ровать і зворотне. Оскільки мікроядра малі і в значній мірі оптімізі-рова, при дотриманні ряду умов вони дозволяють забезпечити характеристики реального часу, що вимагаються для керування пристроями і для високоско-ростних комунікацій. Нарешті, добре структуровані мікроядра забезпе-ють ізолюючий шар для апаратних відмінностей, що не маскуються застосуванням мов програмування високого рівня. Таким чином, вони спрощують перенесення коду і збільшують рівень його повторного використан-ня.

Найбільш яскравим представником мікроядерних операційних систем є операційна система реального часу QNX. Микроядро QNX підтримує тільки планування і диспетчеризацію процесів, взаємодія процесів, обробку переривань і мережеві служби нижнього рівня. Це микроядро забезпечує всього лише пару десятків системних викликів, але завдяки цьому воно може бути цілком розміщено у внутрішньому кеші навіть таких процесорів, як Intel 486. Як відомо, різні версії цієї опе-раціонної системи мали і різні обсяги ядер - від 8 до 46 Кбайт .

Щоб побудувати мінімальну систему QNX. потрібно додати до мікроядра менеджер процесів, який створює процеси і управляє ними і пам'яттю процесів. Щоб операційна система QNX була застосована не тільки у встроеyних і бездискових системах, потрібно додати файлову систему і менеджер вуст-влаштування. Ці менеджери виконуються поза простором ядра, так що ядро ​​залишається невеликим.

література