Механизмы синхронизации. Модификации семафоров

Множественные — особенностью данного механизма является возможность обрабатывать в рамках одного примитива сразу несколько семафоров. Операция Р приводит к закрытию семафоров и считается выполненной, если оба семафора были открытыми.

Счётные — в этой модификации при каждом исполнении примитива допускается изменение счетчика семафора на значение больше еденицы. Начальное значение устанавливается равным количеству читателей. Каждый читатель закрывает семафор на 1, а писатель — на максимальное открывает.

В зависимости от логики работы может наблюдаться дискриминация процессов разных видов, например писатель может голодать при высокой активности запросов на чтение.

Тест-семафоры — для этой модификации вводится усложненная логика примитива V. В качестве параметров кроме семафора указывается величина R, на которую нужно изменить значение и величина Q, с которой сравнивается новое значение счетчика семафора. Если в результате разность > 0 — продолжается работа процесса, иначе — останавливается.

Механизмы синхронизации. Семафороподобные средства

В качестве примеров реализации семафорных механизмов рассмотрим специализированные команды на примере архитектуры Windows.

Семафор в данном случае ячейка памяти, обозначенная специальным тегом.

Закрыть — выполняется традиционно

открыть — реализует 2 варианта решения задачи реактивации (освобождаются все процессы и они обратно должны выполниться)

пропустить — работает аналогично операции открыть, но семафор не открывается.

Жужжать — процесс реализует активное ожидание для указанного семафора.

Отксем — открытие семафора без обработки очереди.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: