Викигимназијалац:Оперативни системи/Решења заснована на активном чекању

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

Стриктна алтернација

уреди

Стриктна алтернација је једно од решења за заштиту критичне секције.Заснива се на коришћењу променљиве (на_реду) којом се одређује који од два процеса има предност. На почетку, предност се даје првом процесу, односно на_реду = 1.

Декеров алгоритам

уреди

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

Питерсонов алгоритам

уреди

Питерсонов алгоритам је представљен 1981. године.Основна идеја овог алторитма је да када процес најави да жели да уђе у критичну секцију, уступи другом процесу предност.Ова предност важи само ако други процес жели да уђе у критичну секцију.Једина мана овог алгоритма је да је применљив само за два процеса.

Лампортов (пекарски) алгоритам

уреди

Уопштење Питерсоновог алгоритма за н процеса представља Лампортов алгоритам. Пошто се не може гарантовати да два процеса неће добити исти број, јер је и додела бројева критична секција, у случају да се то догоди процес са мањим индексом се опслужује први.

Хардверска решења

уреди

Хардверска решења за заштиту критичне секције подразумевају употребу посебних инструкција процесора. Идеја је да се направе машинске инструкције које су у стању да ураде бар две операције без могућности прекида, тј. атомично. Најчешће се за потребе заштите критичне секције користе следеће три инструкције:

  • ТАС (Test And Set),
  • ФАА (Fetch And Add) и
  • СВАП (замена).