Семапхоре вс Монитор
Семапхоре је структура података која се користи да осигура да више процеса не приступа истовремено заједничком ресурсу или критичном одељку, у паралелним програмским окружењима. Семафори се користе да би се избегле мртве браве и услови трке. Монитор је конструкција на програмском језику која се такође користи да се избегне да више процеса приступа заједничком ресурсу и истовремено гарантује међусобно искључење. Монитори користе условне варијабле да би постигли овај задатак.
Шта је семафор?
Семафор је структура података која се користи да омогући међусобно искључење критичних одсека. Семафоре углавном подржавају две операције које се зову чекање (историјски познато као П) и сигнал (историјски познато као В). Операција чекања блокира процес док се семафор не отвори и сигнал сигнала дозволи да уђе још један процес (нит). Сваки семафор повезан је с редом чекања. Када се операција чекања зове нит, ако је семафор отворен, нит се може наставити. Ако је семафор затворен када се операција чекања зове нит, нит се блокира и мора да чека у реду чекања. Операција сигнала отвара семафор и ако постоји нит која већ чека у реду, тај процес је дозвољен да се настави, а ако у реду чекања нема нити, сигнал се памти за следеће нити. Постоје две врсте семафора који се називају мутек семафори и бројећи семафори. Мутек семафори омогућавају један приступ ресурсу, а бројање семафора омогућава више нити да приступе ресурсу (који има на располагању неколико јединица).
Шта је Монитор?
Монитор је конструкција програмског језика која се користи за контролу приступа дељеним подацима. Монитори обухватају заједничке структуре података, процедуре (које делују на заједничким структурама података) и синхронизацију између истодобних позива поступка. Монитор осигурава да његови подаци нису суочени са неструктурираним приступима и гарантује да газећи слојеви (који приступе подацима монитора путем својих процедура) комуницирају на легитиман начин. Монитор гарантује међусобно искључење омогућавајући само једну нит да изврши било који поступак праћења у датом тренутку. Ако други нит покушава позвати методу у монитор, док нит већ извршава процедуру у монитору, онда је други поступак блокиран и мора чекати у реду чекања. Постоје две врсте монитора под називом Хоаре монитор и Меса монитор. Они се углавном разликују по семантике заказивања.
Која је разлика између Семапхора и Монитора?
Иако се и семафори и монитори користе за постизање међусобне искључености у паралелним програмским окружењима, они се разликују у техникама које се користе за постизање овог задатка. Код монитора, код који се користи за постизање међусобне искључености налази се на једном месту и више је структуиран, док се код за семафоре дистрибуира као позив на чекање и сигнал. Такође, врло је лако направити грешке приликом примене семафора, док постоји врло мала шанса за грешке приликом примене монитора. Надаље, монитори користе варијабле стања, док семафоре не.