«жаратылыстану» институты


Wait () және Signal ()командалары



бет29/99
Дата04.10.2022
өлшемі2.45 Mb.
#461924
1   ...   25   26   27   28   29   30   31   32   ...   99
ОЖ УМКДд

Wait () және Signal ()командалары.

Егерде маниторда бір процесс жүріп жатса, оған тағы бір процесске құрау жасасақ, онда манитор Wait күту режимін қосады. Манитор Wait командасы мен тоқтатса, онда маниторға бір шарт қойсақ, сонда бірақ жұмысқа кіріседі. Содан кейін Signal командасы маниторға жұмыс істеліп жатқан процесс босатылды деп хабарлайды.


Монитор , екілік семафорды орналастыру
Операцияның орындалуы Р және V бөлікте семафор S, манитордың көмегімен қарастырсақ. Мұндай алгоритм Хоара алгоритмі болып танылған.
Мониторда статикалық ақпараттық структураларымен бір немесе бірнеше параллельдік процедуралар орындалады. Мынаған қараған кезде манитор - пассивтік белгі болып табылады және манитор процесс берген кезде ғана жұмыс істейді, ал процесс енгізілмесе онда ол тыныштық күйін сақтайды.
Monitor Семафор;
S : integer;
S_POSITIVE: condition; {бұл процесс блокта тұрған кезде тоқтатпайды}
procedure P;
begin
if S<1 then Wait(S_POSITIVE);{орындалуды тосу үштінде}
S:=S-1
end;
procedure V;
begin
S:=S+1;
if S=1 then Signal(S_POSITIVE);{жұмыстың орындалғанын білдіретін дыбыс}
end;
begin
S:=1
end;
Монитордың көмегімен Хоара алгоритмін екі алгоритммен қосуға болатындығын. Мұнда манитор шақырғанда Р және V -ны манитор бұларды Семафор Р және Семафор V деп шақырады.
begin
Parbegin
Процесс_Х:
begin
While (true) do
begin
Call (Cемафор.Р);
{Критический участок Процесса_Х};
Call(Семафор.V);
{Оставшиеся операторы Процесса_Х}
end
end;
Процесс_Y;
begin
While (true) do
begin
Call (Cемафор.Р);
{Критический участок Процесс_Y};
Call(Семафор.V);
{Оставшиеся операторы Процесса_Y}
end
end
Parend
end.




Достарыңызбен бөлісу:
1   ...   25   26   27   28   29   30   31   32   ...   99




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет