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

8. Поштові ящики.

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

Найпростіший алгоритм роботи поштового ящика полягає в тому, що процес Р1 посилає повідомлення в поштовий ящик до тих пір, поки є вільні комірки, а процес Р2 – зчитує ці повідомлення поки є заповнені комірки. В більш складних випадках використовуються двонаправлені поштові ящики які дозволяють підтверджувати прийом (зчитування) повідомлень. В цьому випадку в кожній комірці міститься або повідомлення від процесу Р1, або підтвердження про зчитування (прийняття) повідомлення від процесу Р2.

Технічна реалізація поштових ящиків в ОС Windows – самостійно!

Основними перевагами поштових ящиків є:

  1. процесу нема необхідності знати про існування інших паралельних процесів до того моменту, поки він не отримає повідомлення від них;

  2. два процеси можуть обмінюватись одним повідомленням більше ніж один раз;

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

  4. наявність декількох комірок дозволяє процесу відправнику продовжувати роботу не звертаючи уваги на процес отримувач.

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

9. Конвеєри.

Термін конвеєр вперше був введений в склад операційної системи Unix для систем міні – машин. Конвеєр (pipe) – це ресурс операційної системи, за допомогою якого можна здійснювати обмін повідомленнями між процесами. Розмір конвеєра для ОС міні - машин складав 64 Кб. Механізм роботи конвеєра аналогічний механізму роботи з файлами ОС Unix. Процес який передає інформацію функціонує так само як і при записі інформації у файл, а процес якому призначене це повідомлення просто зчитує ці дані з файлу “pipe” аналогічно зв’язку. Функції ОС, за допомогою яких можна записати інформацію в канал і зчитати з каналу є тими самими, що і при роботі з файлами. Однак канал представляє собою не файл на диску, а буфер в оперативній пам’яті.

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

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

Недоліком конвеєра є фіксований розмір, що обмежує розмір повідомлень якими можна обмінюватись.

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