Semafori vs Monitori
Semafori on tietorakenne, jota käytetään varmistamaan, että useat prosessit eivät pääse yhteiseen resurssiin tai kriittiseen osaan samanaikaisesti, rinnakkaisissa ohjelmointiympäristöissä. Semaforia käytetään kuolleiden lukkojen ja kilpailuolosuhteiden välttämiseksi. Monitori on ohjelmointikielirakenne, jota käytetään myös välttämään useita prosesseja pääsemästä samaan aikaan yhteiseen resurssiin, mikä takaa keskinäisen poissulkemisen. Näytöt käyttävät ehdollisia muuttujia tämän tehtävän saavuttamiseksi.
Mikä on semafori?
Semafori on tietorakenne, jota käytetään antamaan keskinäinen poissulkeminen kriittisiin osiin. Semaforit tukevat pääasiassa kahta operaatiota, joita kutsutaan odottaa (historiallisesti tunnetaan nimellä P) ja signaali (historiallisesti tunnetaan nimellä V). Odotusoperaatio estää prosessia, kunnes semafori on auki ja signaalitoiminto sallii toisen prosessin (säie) pääsyn. Jokainen semafori liittyy odotusprosessien jonoon. Kun säie kutsuu odotustoimintoa, jos semafori on auki, säie voi jatkua. Jos semafori suljetaan, kun säie kutsuu odotusoperaatiota, lanka tukkeutuu ja sen on odotettava jonossa. Signaalitoiminto avaa semaforin ja jos jonossa on jo jonkinlainen ketju, prosessin annetaan edetä ja jos jonossa ei ole ketjuja, signaali muistetaan seuraaville ketjuille. On olemassa kahden tyyppisiä semaforia, joita kutsutaan mutex-semaforiksi ja laskevia semaforia. Mutex-semaforit sallivat yhden pääsyn resurssiin ja laskennalliset semaforit sallivat useiden ketjujen pääsyn resurssiin (jolla on käytettävissä useita yksiköitä).
Mikä on näyttö?
Monitori on ohjelmointikielirakenne, jota käytetään ohjaamaan pääsyä jaettuihin tietoihin. Monitorit kapseloivat jaetut tietorakenteet, proseduurit (jotka toimivat jaetuissa tietorakenteissa) ja synkronointi samanaikaisten menettelytapahtumien välillä. Näyttö varmistaa, että sen tietoihin ei kohdistu rakenteettomia pääsyjä, ja takaa, että kulutuspinnat (jotka käyttävät näytön tietoja menettelyjensä kautta) toimivat laillisella tavalla. Näyttö takaa keskinäisen poissulkemisen sallimalla vain yhden säikeen suorittaa minkä tahansa näyttöproseduurin tiettyyn aikaan. Jos toinen säie yrittää vedota menetelmään näytössä, kun säie jo suorittaa prosessin näytössä, toinen toimenpide estetään ja sen on odotettava jonossa. Näyttöjä on kahta tyyppiä: Hoare-näytöt ja Mesan näytöt. Ne eroavat pääosin aikataulun semantiikasta.
Mitä eroa on Semaforin ja Monitorin välillä??
Vaikka sekä semaforia että näyttöä käytetään keskinäisen poissulkemisen aikaansaamiseen rinnakkaisissa ohjelmointiympäristöissä, ne eroavat toisistaan tämän tehtävän suorittamiseen käytetyissä tekniikoissa. Näyttöissä keskinäisen poissulkemisen saavuttamiseen käytetty koodi on yhdessä paikassa ja rakenteellisempi, kun taas semaforien koodi jaetaan odotus- ja signaalitoimintopuheluiksi. Lisäksi semaforien toteuttamisessa on erittäin helppoa tehdä virheitä, kun taas monitorien toteuttamisessa on hyvin vähän mahdollisuuksia tehdä virheitä. Lisäksi monitorit käyttävät tilamuuttujia, kun taas semaforit eivät.