Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Семафоры. Синхронизация и взаимоисключение при помощи семафоров



Семафоры - это защищенная переменная, которую можно опрашивать и менять только при помощи специальных операций P и V и операции инициализации семафора.

Операция P(S) (вход взаимоисключение):

если S>0

то S:= S – 1

иначе ждать на S

Операция V(S) (выход взаимоисключение):

если есть процесс, ожидающий на S, разрешить одному продолжить работу

иначе S:= S + 1

Семафоры бывают: 1) Двоичные – 0, 1, 2)Считающие – N > 0

Их реализация бывает: 1) Аппаратная 2)Программная

Синхронизация при помощи семафоров PROGRAMM VAR S: (семафор) LOGICAL; PROCEDURE 1 BEGIN начальные операторы P(S); остальные операторы END END PROCEDURE 2 BEGIN начальные операторы V(S); остальные операторы END END BEGIN S:= 0; PARBEGIN PROCEDURE 1 PROCEDURE 2 PAREND END Пусть есть процесс, который ждет некоторого события PROCEDURE 1 и PROCEDURE 2, которая это событие фиксирует. Тогда надо использовать P и V следующим образом:   Реализация взаимоисключений при помощи семафоров. PROGRAMM VAR S: (семафор) LOGICAL; PROCEDURE 1 BEGIN WHILE TRUE DO BEGIN начальные операторы P(S); крититеская область V(S); остальные операторы END END PROCEDURE 2 [ то же самое, что и в PROCEDURE 1 ] BEGIN инициализция семафора (S,1) PARBEGIN PROCEDURE 1 PROCEDURE 2 PAREND END  




Дата публикования: 2015-02-03; Прочитано: 367 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...