Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_5.doc
Скачиваний:
1
Добавлен:
28.08.2019
Размер:
101.89 Кб
Скачать

1.3. Qnx як мережа

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

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

2.1. Мікроядро

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

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

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

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

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

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

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

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

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

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

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

2.3. Зв'язок між процесами за допомогою повідомлень

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

2.3.1. Передача повідомлень

Для прямого зв'язку один з одним взаємодіючі процеси використовують наступні функції мови Сі:

C-функция

Призначення

Send()

для посилки повідомлень;

Receive()

для прийому повідомлень;

Reply()

для відповіді процесу, що послав повідомлення.

Ці функції можуть використовуватися локально або по всій мережі.

Зверніть увагу на те, що для прямого зв'язку процесів один з одним необов'язкове використовування функцій Send(), Receive() і Reply(). Система бібліотечних функцій QNX надбудована над системою обміну повідомленнями, тому процеси можуть використовувати передачу повідомлень побічно при використовуванні стандартних сервісних засобів, наприклад, програмних каналів (pipe).

Рисунок 3 Процес А посилає повідомлення процесу В, який приймає його, обробляє і передає відповідь.

Приведений вище рис. 3 ілюструє простий приклад використовування функцій Send(), Receive() і Reply() при взаємодії двох процесів - А і В:

  1. Процес А посилає повідомлення процесу В, видавши ядру запит Send(). З цієї миті процес А стає SEND-блокованим до тих пір, поки процес В не видасть Receive(), підтверджуючи отримання повідомлення;

  2. Процес У видає Receive() процесу А, чекаючому повідомлення. Процес А змінює свій стан на REPLY-блокований. Оскільки від процесу В очікується повідомлення, він не блокується.

  3. Процес У виконує необхідну обробку, визначувану отриманим від процесу А повідомленням, і видає Reply(). Процес А одержує у відповідь повідомлення і розблоковується. Процес В також розблоковується. Який з процесів почне виконуватися першим, залежить від їх відносних пріоритетів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]