Архітектура ядра системи QNX 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Архітектура ядра системи QNX



Система QNX складається з невеликого ядра (мікроядра) і набору взаємодіючих процесів. Як показано на рисунку 1, система не має ієрархічної структури, її організація швидше нагадує "спортивну команду", в якій гравці (процеси), що мають рівну значущість, взаємодіють один з одним і з своїм "провідним гравцем" (ядром).

Рисунок 1 Мікроядро системи QNX координує роботу системних адміністраторів.

Ядро системи QNX

Ядро є "серцем" будь-якої операційної системи. В деяких системах на ядро покладена така кількість функцій, що, по суті справи, воно саме є повною операційною системою.

В системі QNX ядро є дійсно ядром. Перш за все, як і личить ядру операційної системи реального часу, воно має невеликий розмір - меньше 8 Кбайт. На ядро системи QNX покладено виконання тільки двох основних функцій:

· передача повідомлень (ядро реалізує передачу всіх повідомлень між всіма процесами у всій системі);

· планування (планувальник є частиною ядра і підключається кожного разу, коли процес міняє свій стан в результаті появи повідомлення або переривання).

На відміну від процесів саме ядро ніколи не планується до виконання. Управління передається ядру тільки в результаті прямого виклику ядра або з процесу, або по апаратному перериванню.

Системні процеси

Всі функції, виконувані операційною системою QNX, за винятком функцій ядра, реалізуються стандартними процесами. В типовій конфігурації системи QNX є наступні системні процеси:

· Адміністратор процесів (Proc);

· Адміністратор файлової системи (Fsys);

· Адміністратор пристроїв (Dev);

· Мережний адміністратор (Net).

Системні процеси і процеси користувача

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

Саме така архітектура забезпечує системі QNX необмежену розширюваність. Оскільки більшість функцій QNX виконується стандартними системними процесами, то розширити операційну систему зовсім не складно: достатньо написати і включити в систему програму, що реалізовує нову функцію ОС.

Дійсно, грань між операційною системою і прикладними програмами вельми умовна. Єдиною принциповою відмінністю системних процесів від прикладних є те, що системні процеси управляють ресурсами системи, надаючи їх прикладним процесам.

Припустимо, що ви написали сервер бази даних. Як слід класифікувати цю програму?

Сервер бази даних повинен виконувати функції, аналогічні функціям Адміністратора файлової системи, який одержує запити (повідомлення) на відкриття файлів і читання або запис даних. Не дивлячись на те, що запити до серверу бази даних можуть бути складнішими, і в тому і в іншому випадку формується набір примітивів (за допомогою повідомлень), внаслідок чого забезпечується доступ до системного ресурсу. В обох випадках йдеться про процеси, які можуть бути написаний кінцевим користувачем і виконуватися з потреби. Таким чином, сервер бази даних можна розглядати як системний процес в одному випадку і як прикладний в іншому. Фактично немає ніякої різниці. Важливо відзначити, що в системі QNX подібні процеси включаються без яких би те ні було модифікацій інших компонентів операційної системи.

Драйвери пристроїв

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

Оскільки драйвери виконуються як стандартні процеси, то додавання нового драйвера в систему QNX не впливає на роботу інших компонентів операційної системи. Єдина зміна, яка відбувається в середовищі QNX - це запуск нового драйвера.

Драйвер може бути оформлений або як доповнення до системного процесу, або, для збереження його "індивідуальності", як стандартний процес.

Зв'язок між процесами

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

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

Операційна система з передачею повідомлень

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

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

QNX як мережа

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

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

 

Мікроядро

Ядро операційної системи QNX, представлене на рисунку 2, виконує наступні функції:

· зв'язок між процесами (IPC). Ядро забезпечує три форми IPC (повідомлення, proxy і сигнали);

· мережна взаємодія нижнього рівня. Ядро передає всі повідомлення, призначені процесам на іншому вузлі;

· планування процесів. Планувальник ядра визначає, який процес виконуватиметься наступним;

· первинну обробку переривань. Всі переривання і збої апаратного забезпечення спочатку обробляються в ядрі, а потім передаються відповідному драйверу або системному адміністратору.


Рисунок 2 Мікроядро

Зв'язок між процесами

Ядро QNX підтримує три типи зв'язку між процесами: повідомленнями, proxy і сигналами.

Основною формою IPC в системі QNX є обмін повідомленнями. Повідомлення забезпечують синхронний зв'язок між взаємодіючими процесами, при якій процес, що посилає повідомлення, вимагає підтвердження про його прийом і, можливо, відповіді на повідомлення.

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

Зв'язок сигналами - це традиційна форма IPC. Сигнали використовуються для забезпечення асинхронного зв'язку між процесами.



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 249; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.137.218 (0.006 с.)