Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекції ОС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.02 Mб
Скачать

4.3.4. Засоби взаємодії процесів

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

За десятиліття, що минули після винаходу семафорів, були запропоновані різні засоби синхронізації, більш пристосовані для різних типових завдань. Розглянемо деякі з них.

4.3.4.1. Цілочисельні семафори

У згаданій роботі Дейкстри, крім двійкових семафорів, що приймають значення 0 і 1, було розглянуто також більш загальний тип семафорів зі значеннями на інтервалі від 0 до деякого N. Функція P (S) зменшує позитивне значення семафора на 1, а при нульовому значенні переходить в очікування, як і у випадку довічного семафора. Функція V (S) збільшує значення семафора на 1, але не більше N.

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

Для цілочисельних семафорів іноді зручно використовувати модифіковану функцію V (S, k), другим параметром якої є число одночасно запитуваних одиниць ресурсу. Така функція блокує процес, якщо значення семафора менше k.

4.3.4.2. Семафори з множинним очікуванням

Можлива ситуація, коли процес може вибрати один з декількох шляхів подальшої роботи, але на кожному шляху він може бути заблокований закритим семафором. Розумно було б чекати звільнення будь-якого з семафорів і тільки тоді вибрати вільний шлях. Але як це зробити? Викликавши P (S) для одного з семафорів, процес приречений чекати звільнення саме цього семафора, а не будь-якого з наявних.

Життєва ситуація: покупець у супермаркеті, що вибирає, до якої з кас зайняти чергу. Добре б вгадати чергу, яка пройде швидше ...

Функція множинного очікування P (S1, S2, ... Sn) дозволяє вказати в якості параметрів декілька двійкових семафорів (або масив семафорів). Якщо хоча б один з семафорів вільний, функція займає його, в іншому випадку вона чекає звільнення будь-якого з семафорів.

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

4.3.4.3. Сигнали

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

Таким чином, сигнали сильно схожі на переривання, але тільки високорівневі, керовані системою, а не апаратурою.

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

Подумайте самостійно, як це можна зробити.

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