Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Задания для самопроверки



Задания по теме «Взаимное исключение»

Программные методы решения проблемы
взаимного исключения

1. Задача: решить программным способом задачу взаимного исключения. Являются ли приведенные ниже процедуры решением поставленной задачи? Если нет, объясните, когда могут возникнуть ошибки?

Решение:

process INIT; common boolean C1. C2;

begin С1:= false;С2:= false; start (P1); start (P2); end;

process P1;

Begin

while true do

begin BEFORE1; C1:= true; while C2 do; CS1; C1:= false; AFTER1; end

end;

process P2;

Begin

while true do

begin BEFORE2; while C1 do; C2:= true; CS1; C2:= false; AFTER2; end

end;

2. Решить задачу взаимного исключения, используя логические переменные и процедуру перевода процесса в состояние задержки (приостановки) Delay(T), где параметр T задает время задержки процесса (время, на которое он выводится из конкуренции за время процессора).

3. Алгоритм Деккера можно сформулировать следующим образом:

Процедура инициализации Первый процесс Второй процесс
procedure INIT; common boolean C1,C2; common integer N ; begin C1:= false; C2:= false; N:= 1; start(P1); start(P2) end INIT .   process P1 ; common boolean C1,C2; begin while true do begin BEFORE1 ; C1:= true; while C2 do begin if N<>1 then begin C1:= false; while N<>1 do; C1:= true; end end; CS1 ; C1:= false; N:= 2; AFTER1 ; end end P1 . process P2 ; common boolean C1,C2; begin while true do begin BEFORE2 ; C2:= true; while C1 do begin if N<>2 then begin C2:= false; while N<>2 do; C2:= true; end end; CS2 ; C2:= false; N:=1; AFTER2 ; end end P2 .

Написать алгоритм Деккера для N процессов.

4. Решается ли в приведенных ниже программах проблема взаимного исключения (random – процедура, генерирующая случайное число, delay (T) – процедура задержки процесса на время T, в течение которого процесс не будет конкурировать за время процессора)?

process INIT; common boolean C1. C2; common integer N; common real T1, T2;

begin С1:= false;С2:= false; T1:= random; T1:= random; N:=1; start (P1); start (P2); end;

process P1;

Begin

while true do

begin BEFORE1;

C1:= true;

while C2 and (N<>1) do delay (T1);

CS1;

C1:= false; N:=2;

AFTER1;

End

end;

process P2;

Begin

while true do

begin BEFORE2;

C2:= true;

while C1 and (N<>2) do delay (T2);

CS2;

C2:= false; N:=1;

AFTER2;

End

end;





Дата публикования: 2014-11-29; Прочитано: 242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...