Lecture62. 3 -ð õóâèëáàð
PROCESS 0 PROCESS 1
. . . . . .
flag[0]:=true; flag[1]:=true;
while flag[1] do { nothing }; while flag[0] do
{nothing};
<Ýãçýãòýé ìóæ> <Ýãçýãòýé ìóæ>
flag[0]:=false; flag[1] :=false;
. . . . . .
3. 3 -ð õóâèëáàð
Áóñàä ïðîöåññûã øàëãàõààñàà ºìíº
ýãçýãòýé ìóæèä îðîõ ôëàãàà òîãòîîæ
áàéíà.
Ôëàã òîãòîîãäñîí áàéõàä ººð ïðîöåññ
ýãçýãòýé ìóæèä áàéãàà íü òîãòîîãäâîë òýð
ïðîöåññ ýãçýãòýé ìóæèéã ÷ºëººëòºë
ïðîöåññ ò¿ð õ¿ëýýíý.
Ò¿ãæðýë ¿¿ñýõ ìàãàäëàëòàé . Õî¸ð ïðîöåññ
çýðýã ôëàãàà òîãòîîãîîä ýãçýãòýé ìóæèä
îðâîë íýã íýãèéãýý ýãçýãòýé ìóæèéã
÷ºëººëºõèéã õ¿ëýýí ò¿ãæèãäýíý.
4. 4 -ð õóâèëáàð
PROCESS 0 PROCESS 1
flag[0]=true; flag[1]=true;
while flag[1] do while flag[0] do
begin begin
flag[0]=false; flag[1]=false;
<Ò¿ð õ¿ëýýõ> <Ò¿ð õ¿ëýýõ>
flag[0]=true; flag[0]=true;
end; end;
<Ýãçýãòýé ìóæ> <Ýãçýãòýé ìóæ>
flag[0]=false; flag[1]=false;
5. 4 - ð õóâèëáàð
Ïðîöåññ á¿ð ººðñäèéí ôëàãàà òîãòîîãîîä , äàðàà íü
áèå áèåíèéõýý ôëàãèéã øàëãààä ýðãýýä ººðèéí
ôëàãèéã òýãëýõ òîõèîëäîë ãàð÷ áîëçîøã¿é . Ýíý
íü óäààí ¿ðãýëæëýõã¿é. ª.Õ ýíý íü ò¿ãæðýëèéí
áàéäàë áèø, ¿ë îéëãîëöîõ áàéäàë þì.
6. Íýãäñýí àëãîðèòì
Ïðîöåññ á¿ðä ýãýçãòýé ìóæèä îðîõ áîëîìæ îëäîíî.
Ïðîöåññ á¿ð ººðèéí ôëàãàà òîãòîîãîîä ººðèéí
ýãçýãòýé ìóæèéã ýçýìøèõ ýýëæýý õ¿ëýýíý.
7. Íýãäñýí àëãîðèòì
Var flag: array[0..1] of boolean;
turn: 0..1;
procedureP0;
begin
repeat
flag[0]:=true;
whileflag[1] do if turn=1 then
begin
flag[0]:=false;
whileturn=1 do {nothing};
10. var flag: array [0..1] of boolean;
turn: 0..1;
PROCESS 0
repeat
flag[0]:=true;
turn:=1;
while(flag[1]and(turn=1)do (nothing);
<эгзэгтэй муж>
flag[0] := false;
<бусад код>
until false;
Петерсоны алгоритм
12. Петерсоны алгоритм
Энэ алгоритм нь ямар ч тохиолдолд
солбицлын асуудлыг шийдэж байна.
Энэ алгоритмын үндсэн санаа нь :
Эгзэгтэй мужийг өөр хэн нэгэн эзэмшиж
байгаа гэж үзэж байгаа боловч эхний
боломжоор л тухайн процесс эгзэгтэй
мужийг эзэмшиж эхэлнэ.
15. Ñåìàôîð
Òóñãàé õóâüñàã÷ ÑÅÌÀÔÎÐíü ñèãíàë
äàìæóóëàõ çîðèëãîîð õýðýãëýãäýíý.
Õýðýâ ïðîöåññ íü ñèãíàëûã õ¿ëýýæ áàéãàà áîë
òýð ñèãíàë äàìæóóëàãäàõ õ¿ðòýë õ¿ëýýëòèéí
ãîðèìä îðíî.
Õ¿ëýýõ áîëîí Ñèãíàë äàìæóóëàãäàõ ¿éëäë¿¿ä
òàñëàãäàõ ¸ñã¿é.
Ñåìàôîðûã õ¿ëýýæ áàéãàà ïðîöåññóóäûã
àãóóëàõ çîðèëãîîð äàðààëàë àøèãëàäàã.
Çàð÷ìûí õóâüä îëîí ñåìàôîðòàé áîë îëîí
äàðààëàë áàéíà.
16. Ñåìàôîð
Ñåìàôîð íü á¿õýë òîîí õóâüñàã÷ áàéíà.
Ñåìàôîðûí àíõíû óòãà ýåðýã áàéâàë çîõèñòîé.
Õ¯ËÝÝÕ ¿éëäýë íü ñåìàôîðûí óòãûã õîðîãäóóëíà.
Õýðýâ óòãà íü ñºðºã áîë ïðîöåññ õ¿ëýýëòèéí
ãîðèìä îðíî.
ÑÈÃÍÀË¿éëäýë íü ñåìàôîðûí óòãûã íýìíý. Õýðýâ
óòãà ýåðýã áîë ïðîöåññûã õ¿ëýýëòèéí ãîðèìîîñ
÷ºëººëíº.
17. ¯éëäâýðëýã÷/Õýðýãëýã÷èéí àñóóäàë
Íýã áóþó ò¿¿íýýñ äýýø òîîíû ¿éëäâýðëýã÷èä ºãºãäºë
áîëîâñðóóëààä ò¿¿íèéãýý áóôåðò áàéðëóóëæ áàéíà.
Íýã ë õýðýãëýã÷ òóõàéí àãøèíä áóôåðýýñ
ºãºãäëèéã àâ÷ àøèãëàäàã.
Òóõàéí àãøèíä ¿éëäâýðëýã÷ áóþó õýðýãëýã÷ õî¸ðûí
íýã íü ë áóôåðò õàíäàæ ÷àäíà.
2 ø ñåìàôîð àøèãëàíà.
Íýã íü áóôåðò àãóóëàãäàõ íýãæèéí òîîã àãóóëíà.
Áóôåðèéã àøèãëàõ á¿ðýí áîëîìæèéã îëãîñîí
ñåìàôîð
20. Ýðãýõ áóôåð á¿õèé ¿éëäâýðëýã÷
producer:
repeat
produce item v;
while ( (in + 1) mod n = out) do
{ nothing };
b[in] := v;
in := (in + 1) mod n
forever;
21. Ýðãýõ áóôåð á¿õèé õýðýãëýã÷
consumer
repeat
while in = out do { nothing };
w := b[out];
out := (out + 1) mod n;
consume item w
forever;
24. Ìîíèòîð áóþó õÿíàã÷
Åðäèéí ëïðîöåäóð, ôóíêö
Ǻâõºí íýãïðîöåññ ëòóõàéí àãøèíäìîíèòîð äîòîð àæèëëàæ
áîëíî. Áóñàäïðîöåññóóäíü õ¿ëýýæáàéíà.
Ïðîöåññóóäìîíèòîðò áàéõäààõ¿ëýýëòèéí ãîðèìäîðîõ
ýñâýëò¿ð çîãñîæáîëíî.
26. Ìýäýý äàìæóóëàõ - Ñèíõðîí÷ëîë
Èëãýýã÷ áàõ¿ëýýí àâàã÷ 2 õ¿ëýýëòèéí òºëºâò áàéæ÷ áîëíî ,
¿ã¿é÷ áàéæáîëíî. ( Ìýäýý õ¿ëýýãýýä)
Èëãýýëòèéãáëîêëîõ, õ¿ëýýëòèéãáëîêëîõ
Èëãýýã÷ áîëîí õ¿ëýýã÷ õî¸óëìýäýý äàìæóóëàãäòàë
õ¿ëýýëòèéí ãîðèìäîðíî.
27. Ìýäýý äàìæóóëàõ - Ñèíõðîí÷ëîë
Áëîêëîõã¿éèëãýýõ, Õ¿ëýýëòèéãáëîêëîõ
Èëãýýã÷ ¿éëàæèëëàãààãàà¿ðãýëæë¿¿ëíý.
Ìýäýý õ¿ð÷ èðòýëÕ¿ëýýí àâàã÷ áëîêëîãäîíî.
Áëîêëîõã¿éèëãýýõ, Õ¿ëýýã÷ áëîêëîãäîõã¿é
Àëü íü ÷ áëîêëîãäîõã¿é
29. Õàÿãëàëò
Øóóä áóñ õàÿãëàëò
Ìýäýý íü ÿìàð íýã õàìòûí ýçýìøëèéí ìóæ áóþó
äàðààëàëä èëãýýãäýíý.
Ýíý äàðààëëûã øóóäàíãèéí õàéðöàã ãýæ
íýðëýæ áîëíî. ( Mailbox )
Íýã ïðîöåññ õàéðöàã ðóó ìýäýýãýý èëãýýõýä ,
íºãºº ïðîöåññ õàéðöàãààñ ìýäýýëëèéã àâ÷
áàéíà.