Semaphore vs Monitor
Семафор - параллельді бағдарламалау орталарында бірнеше процестер бір уақытта жалпы ресурсқа немесе маңызды бөлімге кірмейтініне көз жеткізу үшін пайдаланылатын деректер құрылымы. Семафорлар өлі құлыптар мен жарыс жағдайларын болдырмау үшін қолданылады. Монитор - бұл бір уақытта ортақ ресурсқа қатынайтын бірнеше процестерді болдырмау үшін қолданылатын бағдарламалау тілі құрылымы, сондықтан бір-бірін жоққа шығаруға кепілдік береді. Мониторлар бұл тапсырманы орындау үшін шартты айнымалы мәндерді пайдаланады.
Семафор дегеніміз не?
Semaphore – маңызды бөлімдерге өзара тыйым салуды қамтамасыз ету үшін пайдаланылатын деректер құрылымы. Семафорлар негізінен күту (тарихи түрде P ретінде белгілі) және сигнал (тарихи V ретінде белгілі) деп аталатын екі операцияны қолдайды. Күту операциясы семафор ашық болғанша процесті блоктайды және сигнал операциясы басқа процесті (жіпті) енгізуге мүмкіндік береді. Әрбір семафор күту процестерінің кезегімен байланысты. Күту операциясы ағынмен шақырылғанда, семафор ашық болса, ағын жалғасуы мүмкін. Күту операциясы ағынмен шақырылған кезде семафор жабылса, ағын блокталады және ол кезекте күтуге тура келеді. Сигнал операциясы семафорды ашады және кезекте күтіп тұрған ағын болса, бұл процесті жалғастыруға рұқсат етіледі және кезекте күтіп тұрған ағындар болмаса, сигнал келесі ағындар үшін есте сақталады. Мутекстік семафорлар және санау семафорлары деп аталатын семафорлардың екі түрі бар. Mutex семафоралары ресурсқа бір рет қатынасуға мүмкіндік береді және семафорларды санау бірнеше ағындарға ресурсқа қатынасуға мүмкіндік береді (ол бірнеше бірлік қолжетімді).
Монитор дегеніміз не?
Монитор – ортақ деректерге қол жеткізуді басқару үшін пайдаланылатын бағдарламалау тілі құрылымы. Мониторлар ортақ деректер құрылымдарын, процедураларды (ортақ деректер құрылымдарында жұмыс істейтін) және бір мезгілде процедура шақырулары арасындағы үндестіруді инкапсуляциялайды. Монитор деректерінің құрылымданбаған кірулермен бетпе-бет келмейтініне көз жеткізеді және протекторлардың (монитор деректеріне процедуралары арқылы қол жеткізетін) заңды түрде өзара әрекеттесетініне кепілдік береді. Монитор белгілі бір уақытта кез келген монитор процедурасын орындауға тек бір ағынға рұқсат беру арқылы бірін-бірі жоққа шығаруға кепілдік береді. Егер ағын мониторда процедураны орындап жатқанда, басқа ағын монитордағы әдісті шақыруға әрекет жасаса, екінші процедура блокталады және ол кезекте күту керек. Hoare мониторлары және Mesa мониторлары деп аталатын мониторлардың екі түрі бар. Олар негізінен жоспарлау семантикасымен ерекшеленеді.
Семафор мен Монитордың айырмашылығы неде?
Семафорлар да, мониторлар да параллельді бағдарламалау орталарында бірін-бірі жоққа шығару үшін пайдаланылғанымен, олар осы тапсырманы орындау үшін қолданылатын әдістерде ерекшеленеді. Мониторларда өзара алып тастауға қол жеткізу үшін қолданылатын код бір жерде және құрылымдырақ, ал семафорларға арналған код күту және сигнал функцияларын шақыру ретінде таратылады. Сондай-ақ, семафорларды енгізу кезінде қате жіберу өте оңай, ал мониторларды енгізу кезінде қате жіберу мүмкіндігі өте аз. Бұдан басқа, мониторлар шарт айнымалы мәндерін пайдаланады, ал семафорлар қолданбайды.