Razlika između semafora i monitora

Razlika između semafora i monitora
Razlika između semafora i monitora

Video: Razlika između semafora i monitora

Video: Razlika između semafora i monitora
Video: Linux Boot Process: Grub, initrd, explained. 2024, Studeni
Anonim

Semafor protiv monitora

Semafor je podatkovna struktura koja se koristi kako bi se osiguralo da više procesa ne pristupa zajedničkom resursu ili kritičnom odjeljku u isto vrijeme, u okruženjima paralelnog programiranja. Semafori se koriste za izbjegavanje mrtvih brava i uvjeta utrke. Monitor je konstrukcija programskog jezika koja se također koristi kako bi se izbjegao pristup više procesa zajedničkom resursu u isto vrijeme, stoga jamči međusobno isključivanje. Monitori koriste uvjetne varijable za postizanje ovog zadatka.

Što je semafor?

Semafor je podatkovna struktura koja se koristi za pružanje međusobnog isključivanja kritičnih odjeljaka. Semafori uglavnom podržavaju dvije operacije koje se nazivaju čekanje (povijesno poznato kao P) i signal (povijesno poznato kao V). Operacija čekanja blokira proces dok se semafor ne otvori i operacija signala ne dopusti ulazak drugom procesu (niti). Svaki semafor povezan je s redom čekanja procesa. Kada nit pozove operaciju čekanja, ako je semafor otvoren, nit se može nastaviti. Ako se semafor zatvori kada nit pozove operaciju čekanja, nit je blokirana i mora čekati u redu. Operacija signala otvara semafor i ako postoji nit koja već čeka u redu čekanja, tom se procesu dopušta nastavak, a ako nema niti koje čekaju u redu čekanja, signal se pamti za sljedeće niti. Postoje dvije vrste semafora koji se nazivaju mutex semafori i semafori za brojanje. Mutex semafori dopuštaju jedan pristup resursu, a brojeći semafori omogućuju više niti da pristupe resursu (koji ima nekoliko dostupnih jedinica).

Što je monitor?

Monitor je konstrukcija programskog jezika koja se koristi za kontrolu pristupa dijeljenim podacima. Monitori enkapsuliraju zajedničke strukture podataka, procedure (koje rade na zajedničkim strukturama podataka) i sinkronizaciju između istodobnih pozivanja procedura. Monitor osigurava da njegovi podaci nisu suočeni s nestrukturiranim pristupima i jamči da gazišta (koja pristupaju podacima monitora kroz njegove procedure) međusobno djeluju na legitiman način. Monitor jamči uzajamno isključivanje dopuštajući samo jednoj niti da izvrši bilo koju proceduru nadzora u određenom trenutku. Ako druga nit pokuša pozvati metodu u monitoru, dok nit već izvršava proceduru u monitoru, tada je druga procedura blokirana i mora čekati u redu čekanja. Postoje dvije vrste monitora koji se nazivaju Hoare monitori i Mesa monitori. Uglavnom se razlikuju po semantici zakazivanja.

Koja je razlika između semafora i monitora?

Iako se i semafori i monitori koriste za postizanje međusobnog isključivanja u okruženjima paralelnog programiranja, razlikuju se u tehnikama koje se koriste za postizanje ovog zadatka. Kod monitora se kod koji se koristi za postizanje međusobnog isključivanja nalazi na jednom mjestu i više je strukturiran, dok se kod za semafore distribuira kao pozivi funkcije čekanja i signaliziranja. Također, vrlo je lako pogriješiti kod implementacije semafora, dok su vrlo male šanse da se pogriješi kod implementacije monitora. Nadalje, monitori koriste varijable uvjeta, dok semafori ne koriste.

Preporučeni: