Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / Тема_2.ppt
Скачиваний:
202
Добавлен:
11.04.2015
Размер:
3.19 Mб
Скачать

Работоспособные процессы (потоки)

Выбор для

Резервный

Переключение

 

выполнения

 

Инициализация (0)

(3)

 

 

 

Готовый (1)

Вытеснение

Выполняющийся

 

 

 

(2)

 

Снятие блокировки /

Блокировка /

Завершение

Ресурсов

возобновление.

Ресурсов достаточно

Приостановка

 

достаточно

 

 

 

 

Ожидание

 

Транзит (6)

(5)

Завершенный

 

 

 

(4)

Снятие блокировки. Ресурсов

35

 

недостаточно

 

Неработоспособные процессы (потоки)

2.6. Взаимодействие и синхронизация процессов и потоков

2.6.1.Проблемы взаимодействия и синхронизации

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

Вмногопроцессорных системах возможно не только чередование, но и перекрытие процессов.

Способы взаимодействия процессов (потоков) можно классифицировать по степени осведомленности одного процесса о существовании другого.

112

Операционные системы

2.6. Взаимодействие и синхронизация процессов и потоков

2.6.1. Проблемы взаимодействия и синхронизации

Степень

Взаимосвязь

Влияние одного процесса на

Потенциальные

осведомленности

 

другой

проблемы

Процессы не осведо- млены друг о друге

Процессы косвенно осведомлены о наличии друг друга

Процессы непосредст венно осведомлены о наличии друг друга

Конкуренция Результат работы одного процес-

са не зависит от действий других.

Возможно влияние одного про

цесса на время работы другого.

ВзаимоисключенияВзаимоблокировкиГолодание

Сотрудничеств

Результат работы одного процесса

Взаимоисключения

о с использо-

может зависеть от информации,

Взаимоблокировки

ванием разде-

полученной от других.

Голодание

ления

Возможно влияние одного процесса

Синхронизация

 

на время работы другого.

 

Сотрудничеств

Результат работы одного процесса

Взаимоблокировки

о с исполь-

зависит от информации, полученной

(расходуемые ресурсы)

зованием связи

от других процессов.

Голодание

 

Возможно влияние одного процесса

 

 

на время работы другого.

 

113

Операционные системы

2.6.2. Конкуренция процессов в борьбе за ресурсы

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

 

Процесс А попадает в

 

Процесс А покидает

 

 

критическую область

 

 

 

 

критическую область

 

Процесс А

 

 

 

 

 

 

T

 

 

 

 

 

Процесс В пытается

 

Процесс В попадает в

Процесс В покидает

 

 

критическую область

 

попасть в

 

критическую область

Процесс В

 

 

критическую область

 

 

 

 

 

 

 

T

 

Процесс В блокирован

T4

 

T1

T2

T3

 

 

Необходимость взаимоисключений:

 

1. Процессы не должны одновременно находиться в критических областях.

2.В программе не должно быть предположений о скорости или количестве процессов.

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

4.Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.

114

Операционные системы

Взаимоблокировки (тупики, deadlock)

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

Процесс

P2

P1

Исходное

 

 

 

распределение

Ресурс

R1

R2

ресурсов

 

P1

P2 P1

R1

R2

R1 R2 P2

Тупиковая ситуация

115

Операционные системы

Взаимоблокировки (тупики, deadlock)

ОС выделяет ресурс R1 процессу Р2, а ресурс R2 - процессу Р1.

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

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

В результате процессы оказываются взаимно заблокированными.

116

Операционные системы

Взаимоблокировки (тупики, deadlock)

Удобно моделировать условия

возникновения

тупиков, используя направленные графы.

Графы имеют 2 вида узлов: процессы-кружочки

и ресурсы-квадратики.

 

Ребро, направленное от квадрата (ресурса) к

кружку (процессу), означает, что ресурс был

запрошен, получен и используется.

 

Ребро, направленное от процесса (кружка) к

ресурсу (квадрату), означает, что процесс в данный

момент заблокирован и находится в состоянии

ожидания доступа к этому ресурсу. Цикл в графе

означает наличие взаимной блокировки процессов.

Операционные системы

117

 

Проблема “голодание”

R

P1

P2

P3

P1

P2

Активный

Блокированные

Блокированные

 

 

 

R

P1

P2

P3

P1

P2

Активный

Блокированные

Блокированные

 

 

 

R

P3

Активный

R

P3

Активный

118

Операционные системы

Проблема “голодание”

Пусть Р1 обладает ресурсом, а Р2 и РЗ приостановлены в ожидании освобождения ресурса R.

После выхода Р1 из критического раздела доступ к ресурсу будет получен одним из процессов Р2 или РЗ.

Пусть ОС предоставила доступ к ресурсу процессу РЗ.

Пока он работает с ресурсом, доступ к ресурсу вновь требуется процессу Р1.

119

Операционные системы

Проблема “голодание”

В результате по освобождении ресурса R процессом РЗ может оказаться, что ОС вновь предоставит доступ к ресурсу процессу Р1.

Тем временем процессу РЗ вновь требуется доступ к ресурсу R.

Теоретически возможна ситуация, в которой процесс Р2 никогда не получит доступа к требуемому ему ресурсу, несмотря на то что никакой взаимной блокировки в данном случае нет.

120

Операционные системы