Erinevus Semafori Ja Monitori Vahel

Erinevus Semafori Ja Monitori Vahel
Erinevus Semafori Ja Monitori Vahel

Video: Erinevus Semafori Ja Monitori Vahel

Video: Erinevus Semafori Ja Monitori Vahel
Video: Ремонт монитора LG Flatron L1919S 2024, Mai
Anonim

Semafoor vs monitor

Semafoor on andmestruktuur, mida kasutatakse paralleelsetes programmeerimiskeskkondades veendumaks, et mitu protsessi ei pääse ühisele ressursile või kriitilisele sektsioonile korraga juurde. Semafoore kasutatakse surnud lukkude ja võistlustingimuste vältimiseks. Monitor on programmeerimiskeelekonstrukt, mida kasutatakse ka selleks, et vältida ühtsele ressursile korraga juurdepääsu mitmele protsessile, seega tagab vastastikuse välistamise. Monitorid kasutavad selle ülesande saavutamiseks tingimuslikke muutujaid.

Mis on semafoor?

Semafoor on andmestruktuur, mida kasutatakse kriitiliste sektsioonide vastastikuseks välistamiseks. Semafoorid toetavad peamiselt kahte operatsiooni, mida nimetatakse ootamiseks (ajalooliselt tuntud kui P) ja signaaliks (ajalooliselt tuntud kui V). Ootetoiming blokeerib protsessi, kuni semafor on avatud ja signaalioperatsioon võimaldab siseneda teisele protsessile (lõimele). Iga semafor on seotud ooteprotsesside järjekorraga. Kui ooteoperatsioon kutsutakse lõimega, siis kui semafor on avatud, saab lõime jätkata. Kui semafoor on suletud, kui lõime kutsub ootamise toimingu, on niit blokeeritud ja see peab ootama järjekorras. Signaalioperatsioon avab semafori ja kui järjekorras on juba niit ootamas, lastakse sellel protsessil edasi minna ja kui järjekorras pole ühtegi lõime ootamas, siis mäletatakse signaali järgmiste lõimede jaoks. On kahte tüüpi semafoore, mida nimetatakse mutex-semaforiteks ja semaforide loendamiseks. Mutex-semaforid võimaldavad ressursile ühekordset juurdepääsu ja semaforide loendamine võimaldab mitmel niidil ressursile (millel on mitu ühikut saadaval) juurdepääsu.

Mis on monitor?

Monitor on programmeerimiskeelekonstrukt, mida kasutatakse jagatud andmetele juurdepääsu kontrollimiseks. Monitorid kapseldavad jagatud andmestruktuure, protseduure (mis töötavad jagatud andmestruktuurides) ja samaaegsete protseduurikutse sünkroonimist. Monitor jälgib, et tema andmetele ei tekiks struktureerimata juurdepääsu ja tagab, et turvised (mis pääsevad monitori andmetele juurde oma protseduuride kaudu) suhtlevad seaduspäraselt. Monitor tagab vastastikuse välistamise, lubades monitori toiminguid kindla aja jooksul läbi viia ainult ühel lõimel. Kui mõni teine lõime üritab kuvaris kuvatavat meetodit käivitada, samal ajal kui lõime juba monitoris protseduuri teostab, on teine protseduur blokeeritud ja see peab järjekorras ootama. On kahte tüüpi kuvareid nimega Hoare monitorid ja Mesa monitorid. Need erinevad peamiselt ajastamise semantika poolest.

Mis vahe on semafori ja monitori vahel?

Kuigi paralleelsetes programmeerimiskeskkondades kasutatakse vastastikuse tõrjutuse saavutamiseks nii semafoore kui ka monitore, erinevad need selle ülesande saavutamiseks kasutatud tehnikate poolest. Monitorides on vastastikuse välistamise saavutamiseks kasutatav kood ühes kohas ja struktureeritum, samal ajal kui semaforide kood jaotatakse oote- ja signaalifunktsioonide väljakutsetena. Samuti on semaforide rakendamisel väga lihtne vigu teha, samas kui monitoride rakendamisel on väga väike võimalus vigu teha. Lisaks kasutavad monitorid tingimusmuutujaid, semafoorid aga mitte.

Soovitatav: