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

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

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

51

Решение с предпочтением «читателей»

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

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

S2 – мьютекс для доступа к файлу либо читателей, либо одного писателя; RC – количество читающих или желающих читать;

Процесс-читатель:

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

. . . . .

. . . . .

P(S1);

P(S2);

RC := RC + 1;

{Запись в файл}

if RC = 1 then P(S2);

V(S2);

V(S1);

. . . . .

{Чтение из файла}

 

P(S1);

 

RC := RC - 1;

 

if RC = 0 then V(S2);

 

V(S1);

 

. . . . .

 

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

52

Анализ решения

Недостаток: если всегда есть читатели, то писатель никогда не получит доступа – эффект «голодания» процесса (starvation);

Другой вариант – решение с предпочтением писателей: пока в очереди есть писатели, ставить новых читателей в ту же очередь. Недостаток – снижение параллелизма чтения.

Компромиссное решение: изменять предпочтения в зависимости от количества и времени пребывания писателей в очереди.

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

53

Понятие тупика

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

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

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

54

Примеры тупиковых ситуаций

Процесс A открыл файл F1 (в эксклюзивном режиме) и хочет открыть файл F2. Процесс B открыл файл F2 и хочет открыть файл F1.

В системе имеется 100 Мб свободной памяти. Каждый из двух процессов занял по 40 Мб, но потом запрашивает еще 30 Мб.

Процесс A ждет сообщения от процесса B, после чего собирается послать ответ и продолжить работу. Процесс B ждет сообщения от процесса A, после чего собирается послать ответ и продолжить работу.

На узком мосту стоят два барана. Лоб в лоб...

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

55

Тупики, связанные с ресурсами

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

Ресурсом здесь может считаться любой системный объект (аппаратный или программный), который имеется в единственном экземпляре или в ограниченном количестве и может временно отдаваться в нераздельное владение отдельного процесса. Примеры таких ресурсов:

принтер, временно закрепляемый за процессом;

последовательный порт;

файл, открытый в режиме эксклюзивного доступа для одного процесса;

страницы файла подкачки;

места в различных системных таблицах: в таблице процессов, в таблице открытых файлов, в дисковом кэше и т.п.

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

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

56

Другие причины тупиков

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

ожидание одним процессом освобождения семафора или мьютекса, занятого другим процессом;

ожидание процессом сообщения или сигнала от другого процесса;

ожидание завершения работы другого процесса.

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

57

Условия возникновения тупиков

1.Каждый ресурс в данный момент времени либо свободен, либо закреплен за одним из процессов.

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

3.Система не может отобрать ресурсы у процесса, он должен сам освободить их.

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

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

58

Графовая модель тупиков

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

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

59

Табличная модель тупиков

Предполагается, что имеется m видов ресурсов; aj – количество ресурсов каждого вида.

Работают n процессов p1, p2,... , pn.

В данный момент каждый процесс pk владеет ckj единицами ресурса j.

Свободными остаются bj = aj – ckj единиц.

Каждый процесс pk запрашивает rkj единиц ресурса j и блокируется, пока не получит все запрошенные ресурсы.

Система не находится в тупике, если можно по очереди для каждого процесса выполнить следующую процедуру:

дать запрошенные ресурсы какому-нибудь процессу;

освободить все ресурсы этого процесса;

завершить процесс (вычеркнуть его из списка).

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

60

Пример анализа по табличной модели

Пусть n = 3, m = 4, A = (10, 8, 15, 20).

 

 

 

 

 

 

 

 

 

 

3) C =

1) C =

2

4

0

6

2) C =

2

4

0

6

 

 

 

 

 

 

 

 

 

 

 

 

5

0

5

7

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

5

7

 

2

1

5

7

 

 

 

 

 

 

 

 

 

 

 

 

R =

6

0

8

7

R =

6

0

8

7

R =

 

1

2

5

0

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

5

5

5

5

 

5

5

5

5

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

 

 

 

 

0

0

0

0

 

 

 

 

2

1

5

7

 

 

 

 

0

0

0

0

 

 

 

 

0

0

0

0

 

 

 

 

5

5

5

5

 

 

 

 

B =

 

 

 

 

B =

 

 

 

 

B =

 

 

 

 

1

3

5

0

6

3

10

7

8

7

10

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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