Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ПОС] - Курс лекций (Терентьев М. Н.) Версия дл...doc
Скачиваний:
13
Добавлен:
18.09.2019
Размер:
300.03 Кб
Скачать

Архитектура механизмов синхронизации

Теоретически возможно построение механизмов синхронизации для работы на ЭВМ, не имеющих соответствующих аппаратных средств. На практике механизмы синхронизации используют аппаратные средства:

  • Прерывания.

  • Однотактные машинные инструкции – команды, выполняемые за 1 такт (чтобы за 1 такт значение проверялось и изменялось).

Синхронизация с помощью прерываний

Занять и освободить ресурс:

  • Запретить все прерывания.

  • Занять ресурс.

  • Использовать ресурс.

  • Освободить ресурс.

  • Разрешить прерывания.

Процесс является монопольным владельцем ЦП (тем самым обеспечивается исключение всех остальных процессов).

Данный метод имеет недостатки:

  1. решение других задач, кроме взаимоисключающих на основа прерываний затруднено;

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

Синхронизация при помощи переменной состояния

Ресурсу ставится в соответствие переменная состояния, отражающая своим значением факт занятости ресурса и доступное всем процессам. Но в этом случае такая переменная становится критическим ресурсом. Поэтому, прежде чем захватить ресурс, процесс должен захватить переменную состояния. В отношении переменной состояния должна быть решена задача взаимоисключения. Для ее решения можно использовать прерывания (маскирование):

  1. запретить прерывания, тем самым захватив переменную состояния;

  2. занять ресурс, изменив переменную состояния;

  3. освободить переменную состояния, разрешив прерывания;

  4. использовать ресурс;

  5. занять переменную состояния, запретив прерывания;

  6. освободить ресурс, изменив переменную состояния;

  7. освободить переменную состояния, разрешив прерывания.

В данном случае длительность монопольного использования ЦП значительно сокращается, что повышает суммарную производительность системы.

В случае если на шаге 2 процесс обнаружит, что ресурс уже занят, он должен, разрешив прерывания, перейти в режим ожидания:

  • Активное ожидание – процесс сам периодически проверяет состояние ресурса.

  • Пассивное ожидание – процесс становится в очередь.

Использование простого средства синхронизации для создания более сложного является широко распространенным приемом.

Семафоры

Семафор – переменная специального типа, доступная параллельным процессам для проведения над ней только двух типов операций: закрытие (P), открытие (V) – это примитивы работы с семафорами.

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

Отличия отдельных семафорных механизмов:

  • Диапазон изменения значений.

  • Логика действия над семафорами.

  • Количество семафоров, доступных для обработки.

Независимо от вида семафора действует следующее допущение: примитивы, исполняемые над конкретным семафором в параллельных процессах, являются отдельными неделимыми операциями, взаимоисключающими друг друга (то есть, по сути, являются атомарными).