Лекции по операционным системам, страница 9

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

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

Смысл операции P., закрытия светофора, заключается в том, чтобы проверить текущее значение светофора. Если оно неотрицательное, то осуществляется переход к следующей операции, стоящей за операцией Р и при этом значение семафора уменьшается на 1 (-1).

Операция V заключается в том, что значение семафора увеличивается на 1 (+1) при этом один или несколько процессов претендующих на ресурс устанавливается в состояние готовности.

InitSem (S,0)                           тогда структура:

ПР1: begin                              ПР2: begin

            P(S)                                         P(S)

            CS1                                         CS2

            V(S)                                        V(S)

            End                                         End  

 Семафоры получили очень широкое распространение в ОС нашего времени.

В основном различаются: по количеству допустимых светофоров; по диапазону начальных значений, а также по процедурам исполнения операций открытия-закрытия.

Даже для одного критического ресурса можно устанавливать несколько семафоров.

Характерная особенность: при задании семафоров фактически не определяется критический ресурс.

Лекция 8. 11.10.02

Почтовые ящики

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

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

Размер и количество буферов определяется при создании почтового ящика.

Головной элемент обычно содержит информацию о количестве буферов и их размерах.

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