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

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false

N := 1 ; start(P1) ;

start(P2) end INIT .

51

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

 

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

 

while true do

while true do

begin BEFORE ;

begin BEFORE2 ;

Устанавливается порядок

C2 := true ;

while C1 do

входа в критическую секцию

begin

при возникновении

 

if N = 1 then

 

begin

конфликтной ситуации, когда

C2 := false ;

оба процесса параллельно

while N=1 do ;

заявляют о попытке войти в

C2 := true ;

свои критические секции

end

end ;

1

 

CS2 ;

C1 := false; N := 2;

 

C2 := false; N:=1;

AFTER1 ;

end

AFTER2 ;

end

 

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P ) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

52

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N ≠ 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

end

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

53

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

54

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

55

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

56

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

57

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N ≠ 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

58

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N 1 then

if N ≠ 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

59

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N 1 then

if N ≠ 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

Программные методы решения: вариант 5 – алгоритм Деккера

Процедура инициализации

procedure INIT; common boolean C1,C2 ; common integer N ; begin

C1 := false ;

C2 := false ;

N := 1 ; start(P1) ;

Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции

60

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

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

process P1;

process P2;

common boolean C1,C2 ;

common boolean C1,C2 ;

begin

begin

while true do

while true do

begin BEFORE1 ;

begin BEFORE2 ;

C1 := true ;

C2 := true ;

while C2 do

while C1 do

begin

begin

if N ≠ 1 then

if N ≠ 2 then

begin

begin

C1 := false ;

C2 := false ;

while N=2 do ;

while N=1 do ;

C1 := true ;

C2 := true ;

end

end

end ;

end ;

CS1 ;

CS2 ;

C1 := false; N := 2;

C2 := false; N:=1;

AFTER1 ;

AFTER2 ;

 

end

end P1 .

end P2 .

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