Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС (ШПОРЫ).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
267.26 Кб
Скачать

36. Лекция. Взаимодействие процессов. Синхронизация. Тупики

Взаимодействие процессов. Процессы, которые влияют на поведение друг друга путем обмена информацией, принято называть кооперативными или взаимодействующими процессами.

По объему передаваемой информации все средства обмена можно разделить на три категории:

1) сигнальные - передается минимум информации (1 бит) и используются для извещения процесса о наступлении какого-либо события, при этом взаимовлияние процессов минимально;

2) канальные – обмен информацией происходит через линии связи, предоставленные операционной системой, а объем передаваемой информации в единицу времени ограничивается пропускной способностью линий связи;

3) разделяемая память - несколько процессов могут совместно использовать некоторую область адресного пространства, при этом возможность обмена информацией максимальна, как и влияние на поведение другого процесса, но требует повышенной осторожности. Созданием разделяемой памяти занимается операционная система. Разделяемая память представляет собой наиболее быстрый способ взаимодействия процессов в одной вычислительной системе.

Допустим, что в вычислительной системе находятся два взаимодействующих процесса: один из них – H – с высоким приоритетом, другой – L – с низким приоритетом. Процесс с высоким приоритетом вытесняет низкоприоритетный процесс всякий раз, когда он готов к исполнению, и занимает процессор пока не появится процесс с еще большим приоритетом. Тогда в случае, если процесс L находится в своей критической секции, а процесс H, получив процессор, подошел ко входу в критическую область, мы получаем тупиковую ситуацию. Чтобы не допустить возникновения подобных проблем были разработаны различные механизмы синхронизации.

Синхронизация. Для организации синхронизации процессов могут применяться специальные механизмы высокого уровня.

1) Одним из первых механизмов, предложенных для синхронизации поведения процессов, стали семафоры, Семафор S представляет собой целую переменную, принимающую неотрицательные значения, доступ любого процесса к которой, за исключением момента ее инициализации, может осуществляться только через две атомарные операции: P– (проверять) и V (– увеличивать).

При выполнении операции P(S):   пока S <= 0 процесс блокируется,иначе S = S – 1; При выполнении операции V(S):   S = S + 1;

2) Второй и более сложный стал Монитор.Монитор обладает собственными переменными, определяющими его состояние. Значения этих переменных извне могут быть изменены только с помощью вызова функций-методов, они могут использовать в работе только данные, находящиеся внутри монитора, и свои параметры. Только один процесс может быть активен.. Мониторы встречаются в таких языках, как параллельный Паскаль, Java и т. д.

3) Эмуляция мониторов с помощью системных вызовов ,для этого используют еще один механизм– передачу сообщений. Для прямой и непрямой адресации достаточно двух примитивов send и receive, в большинстве систем они уже имеют скрытый механизм блокировки.Передача сообщений в пределах одного компьютера происходит существенно медленнее, чем работа с семафорами и мониторами.

Тупики. Для примера предположим, что несколько процессов конкурируют за обладание конечным числом ресурсов. Если запрашиваемый процессом ресурс недоступен, ОС переводит данный процесс в состояние ожидания. В случае, когда требуемый ресурс удерживается другим ожидающим процессом, первый процесс не сможет сменить свое состояние. Такая ситуация называется тупиком (deadlock). Системная тупиковая ситуация является следствием того, что один или более процессов находятся в состоянии тупика.

Для образования тупика является выполнение всех четырех условий:

1)  условие взаимоисключения: одновременно использовать ресурс может только один процесс;

2)  условие ожидания ресурсов: процессы удерживают ресурсы, уже выделенные им, и могут запрашивать другие ресурсы;

3)  условие неперераспределяемости: ресурс, выделенный ранее, не может быть принудительно отобран у процесса;

4)  условие кругового ожидания: существует кольцевая цепь процессов, в которой каждый процесс ждет доступа к ресурсу, удерживаемому другим процессом цепи.

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

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

ПРАКТИЧЕСКИЕ ВОПРОСЫ