Semaphore vs Monitor
Semaphore - параллелдүү программалоо чөйрөлөрүндө бир нече процесстер бир эле учурда жалпы ресурска же критикалык бөлүмгө кирбеши үчүн колдонулган маалымат структурасы. Семафорлор өлүк кулпулардан жана жарыш шарттарынан качуу үчүн колдонулат. Монитор - бул программалоо тилинин конструкциясы, ал бир эле учурда жалпы ресурска кирүүнүн бир нече процесстерин болтурбоо үчүн колдонулат, ошондуктан бири-бирин четке кагууга кепилдик берет. Мониторлор бул тапшырманы аткаруу үчүн шарттуу өзгөрмөлөрдү колдонушат.
Семафор деген эмне?
Semaphore - маанилүү бөлүмдөрдүн бири-бирин жокко чыгаруу үчүн колдонулган маалымат структурасы. Семафорлор негизинен күтүү (тарыхый P катары белгилүү) жана сигнал (тарыхый V катары белгилүү) деп аталган эки операцияны колдойт. Күтүү операциясы семафор ачылганга чейин процессти блоктойт жана сигнал операциясы башка процесске (жипке) кирүүгө мүмкүндүк берет. Ар бир семафор күтүү процесстеринин кезеги менен байланышкан. Күтүү операциясы жип аркылуу чакырылганда, семафор ачык болсо, жип улана берет. Күтүү операциясы жип менен чакырылганда семафор жабылып калса, жип бөгөттөлүп, кезекте күтүүгө туура келет. Сигнал операциясы семафорду ачат жана кезекте күтүп турган жип бар болсо, ал процессти улантууга уруксат берилет, ал эми кезекте күтүп турган жиптер жок болсо, сигнал кийинки жиптер үчүн эсте калат. Мутекс семафору жана санагыч семафору деп аталган семафорлордун эки түрү бар. Mutex семафорлору ресурска бир эле кирүү мүмкүнчүлүгүн берет жана семафорлорду эсептөө бир нече жиптерге ресурска кирүүгө мүмкүндүк берет (бир нече бирдиктер бар).
Монитор деген эмне?
Монитор – бул бөлүшүлгөн маалыматтарга кирүү мүмкүнчүлүгүн көзөмөлдөө үчүн колдонулган программалоо тилинин конструкциясы. Мониторлор бөлүшүлгөн маалымат структураларын, процедураларды (жалпы берилиш структураларында иштеген) жана параллелдүү процедураларды чакыруулардын ортосундагы синхрондоштурууну камтыйт. Монитор анын маалыматтары структураланбаган кирүүлөргө туш болбошуна ынанат жана тепкичтердин (анын процедуралары аркылуу монитордун маалыматтарына кире турган) мыйзамдуу түрдө өз ара аракеттенүүсүнө кепилдик берет. Монитор бир эле учурда каалаган монитор процедурасын аткарууга уруксат берүү менен бири-бирин четке кагууга кепилдик берет. Эгерде жип монитордо процедураны аткарып жатканда, башка жип монитордогу методду чакырууга аракет кылса, анда экинчи процедура бөгөттөлүп, кезекте күтүүгө туура келет. Hoare мониторлору жана Mesa мониторлору деп аталган мониторлордун эки түрү бар. Алар негизинен пландоо семантикасы менен айырмаланат.
Семафор менен Монитордун ортосунда кандай айырма бар?
Семафорлор да, мониторлор да параллелдүү программалоо чөйрөлөрүндө бири-бирин четке кагуу үчүн колдонулса да, алар бул тапшырмага жетүү үчүн колдонулган ыкмалар менен айырмаланат. Мониторлордо бири-бирин четке кагуу үчүн колдонулган код бир жерде жана көбүрөөк структураланган, ал эми семафорлордун коду күтүү жана сигнал функциясынын чалуулары катары бөлүштүрүлөт. Ошондой эле, семафорлорду ишке ашырууда ката кетирүү абдан оңой, ал эми мониторлорду ишке ашырууда ката кетирүү мүмкүнчүлүгү өтө аз. Андан тышкары, мониторлор шарт өзгөрмөлөрүн колдонушат, ал эми семафорлор колдонбойт.