Операционные системы, среды и оболочки. Макаренко С.И. - 44 стр.

UptoLike

Составители: 

неотрицательные значения. Такие переменные, используемые для
синхронизации вычислительных процессов, получили название семафоров.
Для работы с семафорами вводятся два примитива POST и WAIT,
традиционно обозначаемых Р и V. Пусть переменная S представляет собой
семафор. Тогда действия V(S) и P(S) определяются следующим образом.
V(S): переменная S увеличивается на 1 единым действием.
Выборка, наращивание и запоминание не могут быть прерваны. К
переменной S нет доступа другим потокам во время выполнения
этой операции.
PCS): уменьшение S на 1, если это возможно. Если S=0 и
невозможно уменьшить S, оставаясь в области целых
неотрицательных значений, то в этом случае поток, вызывающий
операцию Р, ждет, пока это уменьшение станет возможным.
Успешная проверка и уменьшение также являются неделимой
операцией.
Никакие прерывания во время выполнения примитивов V и Р
недопустимы.
Рис. 2.7. Реализация критической секции с использованием системных
функций WAIT(D) и POST(D)
44
неотрицательные значения. Такие переменные, используемые для
синхронизации вычислительных процессов, получили название семафоров.
     Для работы с семафорами вводятся два примитива POST и WAIT,
традиционно обозначаемых Р и V. Пусть переменная S представляет собой
семафор. Тогда действия V(S) и P(S) определяются следующим образом.
     − V(S): переменная S увеличивается на 1 единым действием.
        Выборка, наращивание и запоминание не могут быть прерваны. К
        переменной S нет доступа другим потокам во время выполнения
        этой операции.
     − PCS): уменьшение S на 1, если это возможно. Если S=0 и
        невозможно уменьшить S, оставаясь в области целых
        неотрицательных значений, то в этом случае поток, вызывающий
        операцию Р, ждет, пока это уменьшение станет возможным.
        Успешная проверка и уменьшение также являются неделимой
        операцией.
     Никакие прерывания во время выполнения примитивов V и Р
     недопустимы.




   Рис. 2.7. Реализация критической секции с использованием системных
                       функций WAIT(D) и POST(D)


                                   44