Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Семафор — специальная защищенная переменная в ОС. Под защищённостью понимается невозможность для прикладной программы работать с этой переменной непосредственно. Для доступа к семафору программа должна использовать специальные системные вызовы ядра (примитивы):
- установить начальное значение семафора S;
- P(S) — если S>0, то S:=S — 1, иначе ожидать на S;
- V(S) — если один или более процессов ожидают на S, то позволить одному из них продолжить работу, иначе S:=S+1.
Обратите внимание, что вызов примитива P(S) может заблокировать процесс до выполнения примитива V(S) другим процессом.
Все вызовы ядра для управления семафорами атомарны, то есть не могут быть прерваны другими процессами.
Семафоры, управляемые описанными примитивами, называются считающими, так как в принципе могут принимать любые неотрицательные значения. В частности, такие семафоры могут использоваться для управления несколькими однотипными ресурсами в системе.
Семафоры, которые могут принимать только два значения: 0 и 1, — называются мьютексами. Такие семафоры чаще всего применяются для организации процедуры взаимоисключения.
В современных ОС реализуется несколько разных механизмов управления семафорами, модифицирующих базовые алгоритмы, описанные выше.
Дата публикования: 2015-02-03; Прочитано: 1273 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!