Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 4. ОС - Управление процессами - 1

.pdf
Скачиваний:
56
Добавлен:
01.06.2015
Размер:
1.1 Mб
Скачать

41

Целочисленные семафоры

Значения переменной S: от 0 до N.

Операция P(S, k): процесс ожидает, когда значение S будет не менее k, после чего S := S – k.

Операция V(S, k): S := S + k.

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

Операционные системы. Управление процессами - 1

42

Операции множественного ожидания

Первый вариант:

P(S1, S2, … Sn) – процесс ожидает момента, когда любая Si = 1, после этого присваивает Si = 0. Используется, например, в процессах типа сервера, ожидающего запроса от любого клиента.

Второй вариант:

P(S1, S2, … Sn) – процесс ожидает момента, когда все Si = 1, после этого присваивает все Si = 0. Используется для синхронизации нескольких параллельных ветвей алгоритма.

Операционные системы. Управление процессами - 1

43

Другие средства взаимодействия процессов

Событие – это переменная (E), которая:

принимает значения 0 (нет события) и 1 (есть событие); допускает выполнение неделимых операций:

Ждать(E): текущий процесс ожидает, пока не станет E = 1, при этом:

для события с автосбросом: E := 0;

для события с ручным сбросом: E не изменяется;

Установить(E): E := 1.

Сбросить(E): E := 0.

Различия между событием и мьютексом:

Для мьютекса нет операции Сбросить(E).

Освободить мьютекс может только то же процесс, который его занял; для события нет понятия «занять», поэтому разные процессы могут устанавливать, сбрасывать, ждать события в любом порядке.

Операционные системы. Управление процессами - 1

44

Другие средства взаимодействия процессов

Сигнал – посылается процессу системой или другим процессом.

С сигналом не связано никакой информации, кроме номера (типа сигнала) и адресата.

При получении сигнала процесс прерывает свою текущую работу и выполняет функциюобработчик сигналов данного типа.

Таким образом, сигналы похожи на прерывания, но только высокоуровневые, управляемые системой, а не аппаратурой.

В UNIX сигналы – традиционное средство решения проблем синхронизации, в том числе и взаимного исключения.

Сообщения – отличаются от сигналов:

могут содержать дополнительную информацию;

не прерывают работу процесса, а становятся в очередь к процессу;

широко используются в ОС Windows.

Операционные системы. Управление процессами - 1

45

Средства обмена данными

Общая память – выделенная область памяти, доступная двум или более процессам.

Программные каналы (pipelines) – позволяет использовать файловые функции чтения/записи (один процесс пишет данные в канал, другой читает из канала).

Очереди сообщений – см. выше.

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

Операционные системы. Управление процессами - 1

46

Задача «Поставщик / Потребитель»

Имеется буфер из N мест для хранения очереди "единиц продукции", ожидающих обработки.

Процесс-поставщик добавляет единицы в очередь (или ожидает, если в буфере нет места).

Процесс-потребитель забирает единицы из очереди (или ожидает, если буфер пуст).

Необходимо исключить одновременное обращение обоих процессов к буферу, поскольку это может привести к ошибке.

Операционные системы. Управление процессами - 1

47

Решение с помощью мьютекса и двух счетчиков

Используются переменные:

S – мьютекс для взаимного исключения;

C1 – счетчик свободных мест в буфере (первоначально равен N); C2 – счетчик занятых мест в буфере (первоначально равен 0);

Процесс-поставщик: Процесс-потребитель:

. . . . .

while (C1 = 0) do

;

C1 := C1 – 1;

P(S);

{Поместить единицу в буфер}

V(S);

C2 := C2 + 1;

. . . . .

. . . . .

while (C2 = 0) do

;

C2 := C2 – 1;

P(S);

{Взять единицу из буфера}

V(S);

C1 := C1 + 1;

. . . . .

Операционные системы. Управление процессами - 1

48

Недостатки предыдущего решения

Используется активное ожидание ненулевых значений C1 и C2;

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

Операционные системы. Управление процессами - 1

49

Решение с помощью трех семафоров

Используются семафоры:

S – мьютекс для взаимного исключения;

S1 – целочисленный семафор свободных мест в буфере (= N); S2 – целочисленный семафор занятых мест в буфере (= 0);

Процесс-поставщик:

Процесс-потребитель:

. . . . .

. . . . .

P(S1, 1);

P(S2, 1);

P(S);

P(S);

{Поместить единицу

{Взять единицу из

в буфер}

буфера}

V(S);

V(S);

V(S2, 1);

V(S1, 1);

. . . . .

. . . . .

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

Операционные системы. Управление процессами - 1

50

Задача «Читатели / Писатели»

Имеется файл (или база данных), находящийся в совместном пользовании нескольких процессов.

Процессы делятся на «читателей», которые посылают запросы только на чтение данных, и «писателей», посылающих запросы на изменение данных.

Порядок запросов и время их поступления произвольны.

Одновременно с процессом может работать либо любое число «читателей», либо только один «писатель».

Операционные системы. Управление процессами - 1