Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации лекций по ТОИ / 18-Проблема взаимного исключения.pps
Скачиваний:
46
Добавлен:
02.06.2015
Размер:
1.72 Mб
Скачать

Программные методы решения: вариант 2

Процедура

инициализации

procedure INIT;

common boolean C1,C2 ; begin

C1 := false ;

C2 := false ; start(P1) ;

start(P2) end INIT .

Первый процесс

process P1;

common boolean C1,C2 ; begin

while true do begin

BEFORE1 ;

while C2 do ; C1 := true ;

CS1 ;

C1 := false ; AFTER1 ;

end end P1 .

Второй процесс

process P2;

common boolean C1,C2 ; begin

while true do begin

BEFORE2 ;

while C1 do ; C2 := true ;

CS2 ;

C2 := false ; AFTER2 ;

end end P2 .

41

Программные методы решения: вариант 2

Процедура

процесс

Процессы параллельно

 

вошли в критическую

boolean C1,C2 ;

секцию!

do

1 ;

C2 do ;

end INIT . C1 := true ;

CS1 ;

C1 := false ; AFTER1 ;

end end P1 .

Второй процесс

process P2;

common boolean C1,C2 ; begin

while true do begin

BEFORE2 ;

while C1 do ;

C2 := true ;

CS2 ;

C2 := false ; AFTER2 ;

end end P2 .

42

Программные методы решения: вариант 3

Процедура

инициализации

procedure INIT; common boolean begin

C1 := false

C2 := false ; start(P1) ;

start(P2) end INIT .

Устанавливается признак намерения занять

критическую секцию.

Все ли требования к процесс

критической секции выполняются? C1,C2 ;

BEFORE1 ;

BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do ;

while C1 do ;

CS1 ;

CS2 ;

C1 := false ;

C2 := false ;

AFTER1 ;

AFTER2 ;

end

end

end P1 .

end P2 .

43

Программные методы решения: вариант 3

Процедура

инициализации

procedure INIT; common boolean C1,C2 ; begin

C1 := false ;

C2 := false ; start(P1) ;

start(P2) end INIT .

Первый процесс

Второй процесс

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin

begin

BEFORE1 ;

BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do ;

while C1 do ;

CS1 ;

CS2 ;

C1 := false ;

C2 := false ;

AFTER1 ;

AFTER2 ;

end

end

end P1 .

end P2 .

44

Программные методы решения: вариант 3

Процедура

инициализации

procedure INIT; common boolean C1,C2 ; begin

C1 := false ;

C2 := false ; start(P1) ;

start(P2) end INIT .

Первый процесс

Второй процесс

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin

begin

BEFORE1 ;

BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do ;

while C1 do ;

CS1 ;

CS2 ;

C1 := false ;

C2 := false ;

AFTER1 ;

AFTER2 ;

end

end

end P1 .

end P2 .

45

Программные методы решения: вариант 3

Процедура

инициализации

procedure INIT; common boolean C1,C2 ; begin

C1 := false ;

C2 := false ; start(P1) ;

start(P2) end INIT .

Первый процесс

Второй процесс

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin

begin

BEFORE1 ;

BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do ;

while C1 do ;

CS1 ;

CS2 ;

C1 := false ;

C2 := false ;

AFTER1 ;

AFTER2 ;

end

end

end P1 .

end P2 .

46

Программные методы решения: вариант 3

Процедура

инициализации

procedure INIT; common boolean C1,C2 ; begin

C1 := false ;

C2 := false ; start(P1) ;

start(P2) end INIT .

Первый процесс

Второй процесс

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin

begin

BEFORE1 ;

BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do ;

while C1 do ;

CS1 ;

CS2 ;

C1 := false ;

C2 := false ;

AFTER1 ;

AFTER2 ;

end

end

end P1 .

end P2 .

47

Программные методы решения: вариант 3

Взаимное блокирование – Первый процесс

процессы никогда не войдут

P1;

в критическую секцию и не

boolean C1,C2 ;

смогут продолжить

 

выполнение –

true do

«смертельные объятия»!begin

BEFORE1 ;

C1 := true ; while C2 do ;

CS1 ;

C1 := false ;

AFTER1 ;

end end P1 .

Второй процесс

process P2;

common boolean C1,C2 ; begin

while true do begin

BEFORE2 ;

C2 := true ; while C1 do ;

CS2 ;

C2 := false ;

AFTER2 ;

end end P2 .

48

Программные методы решения: вариант 3

Общая проблема всех методов – «занятое ожидание» - время процессора тратится впустую

en INIT

CS1 ;

C1 := false ;

AFTER1 ;

end end P1 .

Второй процесс

process P2;

common boolean C1,C2 ; begin

while true do begin

BEFORE2 ;

C2 := true ; while C1 do ;

CS2 ;

C2 := false ;

AFTER2 ;

end end P2 .

49

Программные методы решения:

вариант 4

 

Процессы «усыпляются» на случайные

 

 

интервалы времени, после чего

 

 

повторяют попытки входа, «переждав»

Процедура

 

 

соперника.

 

Используется специальная системная

инициализации

 

 

функция, выводящая на время

procedure INIT;

process

процессы из конкуренции за ресурсы.

common boolean C1,C2 ;

common

Процессор не занят на время ожидания

begin

begin

 

 

C1 := false ;

while

 

 

C2 := false ;

begin

 

 

start(P1) ;

C1

 

start(P2)

 

 

 

end INIT .

 

 

 

 

 

C1 := true ;

C2 := true ;

 

 

end ;

end ;

 

CS1 ; C1 := false ;

CS2 ; C2 := false ;

 

AFTER1 ;

AFTER2 ;

 

end

 

end

50

end P1 .

 

end P2 .

 

 

 

Соседние файлы в папке Презентации лекций по ТОИ