You are on page 1of 9

РЕШЕЊА ЗАСНОВАНА

НА АКТИВНОМ ЧЕКАЊУ
КРИТИЧНА СЕКЦИЈА

• Део програма у којем се приступа


заједничким подацима назива се крититчна
секција.
РЕШЕЊЕ ЗА ЗАШТИТУ КРИТИЧНЕ СЕКЦИЈЕ
ТРЕБА ДА ЗАДОВОЉИ УСЛОВЕ:

Узајамна Услов коначног


искључивост Услов прогреса чекања
• Подразумева да два • процес који не улази у • Подразумева да би
процеса не могу у исто критичну секцију не требало да постоји
време да буду у треба да омета друге да (разумна) граница
критичној секцији. у њу уђу колико један процес
може да чека на улазак
у критичну секцију.
• То је кључни захтев без
• Ни под којим условима
којег нема решења за
не може да се догоди да
заштиту критичне
неки од процеса
секције.
неограничено чека.
. РЕШЕЊА ЗАСНОВАНА НА
АКТИВНОМ ЧЕКАЊУ
• Већи број решења за заштиту
критичне секције заснива се на
тзв. активном чекању, односно на
чекању у циклусу (петљи)док се
не створе услови за улазак
процеса у критичну секцју.
• Може се стећи утисак да је
релативно једноставно
имплементирати граничнике који
би омогућили заштиту критичне Заштита критичне секције уз помоћ граничника
секције.
СТРИКТНА АЛТЕРНАЦИЈА

Proces 1: Proces 2:
WHILE(na_redu == 2) WHILE(na_redu == 1)
//Aktivno čekanje //Aktivno čekanje
ENDWHILE ENDWHILE
//Kritična sekcija //Kritična sekcija
na_redu = 2; na_redu = 1;

• Заснива се на коришћењу променљиве НА_РЕДУ којом се одређује који од два


процеса има предност.
• На почетку, предност се даје првом процесу тј. НА_РЕДУ=1.
• Процеси активно чекају да дођу на ред, тј. да променљива НА_РЕДУ добије
вредност њиховог броја (1 ili 2).
• Када напусти критичну секцију, процес променљивој НА_РЕДУ поставља
вредност другог процеса који тако добија шансу да приступи критичној секцији.
СТРИКТНА АЛТЕРНАЦИЈА

• Мана • Предност

Мана овог алгоритма је што он • Погодан је када процеси треба


подразумева да само два процеса наизменично да приступају дељеним
улазе у критичку секцију, и не ресурсима.
испуњава услов прогреса и услов
коначног чекања.

Уколико један процес има предност а


не жели да уђе у критичну секцију, он
ће блокирати други процес и тиме
онемогућити прогрес, а како то
блокирање може да буде на
неодређено време , јасно је да ни
услов коначног чекања није задовољен.
ДЕКЕРОВ АЛГОРИТАМ
Ово је први комплетан алгоритам за решавање проблема критичне секције.
Користе се три променљиве

желиПроцес1 желиПроцес2 наРеду


први процес други процес води се рачуна који
најављује да жели најављује да жели процес улази у
да уђе у критичну да уђе у критичну критичну секцију
секцију секцију
ДЕКЕРОВ АЛГОРИТАМ
Proces 1: Proces 2:
//Proces najavljuje da želi u želi_proces_2 = 1;
//kritičnu sekciju WHILE(zeli_proces_1 == 1)
želi_proces_1 = 1; IF (na_redu == 1)
//Ako to želi i drugi... želi_proces_2 = 0;
WHILE(želi_proces_2 == 1) WHILE (na_redu == 1)
//Proverava se da li drugi ENDWHILE
//ima prednost želi_proces_2 = 1;
IF (na_redu == 2) ENDIF
//Menja se želja ENDWHILE
želi_proces_1 = 0; //Kritična sekcija
//Proverava se da li drugi na_redu = 1;
//ima prednost želi_proces_2 = 0;
WHILE (na_redu == 2)
//Aktivno čekanje
ENDWHILE
želi_proces_1 = 1; На почетку се једном процесу даје
ENDIF предност. Ако и други процес жели да уђе
ENDWHILE у критичну секцију, проверава се ко има
//Kritična sekcija
предност.
na_redu = 2;
želi_proces_1 = 0;
ДЕКЕРОВ АЛГОРИТАМ

• Овај алгоритам не дозвољава да два процеса истовремено уђу у


критичну секцију, и не дозвољава да дође до заглављивања.
• Нема принцип праведности, може да се деси да један процес прође
два пута заредом, чиме је прекршен принцип праведности.

• Ограничење је чињеница да је алгоритам намењен искључиво за


ситуације када два процеса конкуришу за исте податке.

You might also like