Razlika med semaforjem in monitorjem

Razlika med semaforjem in monitorjem
Razlika med semaforjem in monitorjem

Video: Razlika med semaforjem in monitorjem

Video: Razlika med semaforjem in monitorjem
Video: Она не понимала, почему ее сын темнокожий. Правда открылась через 3 года! 2024, Julij
Anonim

Semafor proti monitorju

Semafor je podatkovna struktura, ki se uporablja za zagotovitev, da več procesov ne dostopa do skupnega vira ali kritičnega odseka hkrati v okoljih vzporednega programiranja. Semaforji se uporabljajo za izogibanje mrtvim ključavnicam in pogojem tekmovanja. Monitor je konstrukcija programskega jezika, ki se uporablja tudi za preprečevanje dostopa več procesov do skupnega vira hkrati, zato zagotavlja medsebojno izključevanje. Monitorji za doseganje te naloge uporabljajo pogojne spremenljivke.

Kaj je semafor?

Semafor je podatkovna struktura, ki se uporablja za zagotavljanje medsebojne izključitve kritičnih odsekov. Semaforji večinoma podpirajo dve operaciji, imenovani čakanje (zgodovinsko znano kot P) in signal (zgodovinsko znano kot V). Operacija čakanja blokira proces, dokler se semafor ne odpre in operacija signala dovoli vstop drugemu procesu (niti). Vsak semafor je povezan s čakalno vrsto čakajočih procesov. Ko nit pokliče čakalno operacijo, če je semafor odprt, se nit lahko nadaljuje. Če je semafor zaprt, ko nit pokliče operacijo čakanja, je nit blokirana in mora čakati v čakalni vrsti. Operacija signala odpre semafor in če v čakalni vrsti že čaka nit, se ta proces lahko nadaljuje in če v čakalni vrsti ni čakajočih niti, se signal zapomni za naslednje niti. Obstajata dve vrsti semaforjev, imenovani semaforji mutex in semaforji za štetje. Semaforji Mutex omogočajo en sam dostop do vira, semaforji s štetjem pa omogočajo več nitim dostop do vira (ki ima na voljo več enot).

Kaj je monitor?

Monitor je konstrukcija programskega jezika, ki se uporablja za nadzor dostopa do podatkov v skupni rabi. Nadzorniki zajemajo skupne podatkovne strukture, procedure (ki delujejo na skupnih podatkovnih strukturah) in sinhronizacijo med sočasnimi klici postopkov. Monitor zagotavlja, da njegovi podatki niso izpostavljeni nestrukturiranim dostopom, in zagotavlja, da tekalne plasti (ki dostopajo do podatkov nadzornika prek njegovih postopkov) medsebojno delujejo na zakonit način. Nadzornik zagotavlja medsebojno izključitev tako, da dovoljuje samo eni niti, da v določenem času izvede kateri koli nadzorni postopek. Če druga nit poskuša priklicati metodo v monitorju, medtem ko nit že izvaja proceduro v monitorju, je druga procedura blokirana in mora čakati v čakalni vrsti. Obstajata dve vrsti monitorjev, imenovani monitorji Hoare in monitorji Mesa. Razlikujeta se predvsem v semantiki razporejanja.

Kakšna je razlika med semaforjem in monitorjem?

Čeprav se tako semaforji kot monitorji uporabljajo za doseganje medsebojne izključitve v vzporednih programskih okoljih, se razlikujejo v tehnikah, uporabljenih za dosego te naloge. Pri monitorjih je koda, ki se uporablja za doseganje medsebojne izključitve, na enem mestu in je bolj strukturirana, kode za semaforje pa so razporejene kot klici funkcij čakanja in signaliziranja. Prav tako je zelo enostavno narediti napake pri implementaciji semaforjev, medtem ko je zelo malo možnosti za napake pri implementaciji monitorjev. Poleg tega monitorji uporabljajo pogojne spremenljivke, semaforji pa ne.

Priporočena: