Diferència entre semàfor i monitor

Diferència entre semàfor i monitor
Diferència entre semàfor i monitor

Vídeo: Diferència entre semàfor i monitor

Vídeo: Diferència entre semàfor i monitor
Vídeo: difference between lilo and grub | what is grub | What is LILO? | Lec - 5 2024, Juliol
Anonim

Semàfor vs Monitor

El semàfor és una estructura de dades que s'utilitza per assegurar-se que diversos processos no accedeixen a un recurs comú o a una secció crítica alhora, en entorns de programació paral·lels. Els semàfors s'utilitzen per evitar bloquejos i condicions de carrera. Monitor és una construcció de llenguatge de programació que també s'utilitza per evitar que diversos processos accedeixin a un recurs comú al mateix temps, per tant, garanteix l'exclusió mútua. Els monitors utilitzen variables condicionals per aconseguir aquesta tasca.

Què és un semàfor?

El semàfor és una estructura de dades que s'utilitza per proporcionar exclusió mútua de les seccions crítiques. Els semàfors suporten principalment dues operacions anomenades espera (històricament coneguda com a P) i senyal (històricament coneguda com a V). L'operació d'espera bloqueja un procés fins que el semàfor estigui obert i l'operació de senyal permet que entri un altre procés (fil). Cada semàfor està associat a una cua de processos d'espera. Quan un fil crida l'operació d'espera, si el semàfor està obert, el fil pot continuar. Si el semàfor es tanca quan un fil crida l'operació d'espera, el fil queda bloquejat i s'ha d'esperar a la cua. L'operació de senyal obre un semàfor i si ja hi ha un fil esperant a la cua, es permet que aquest procés continuï i si no hi ha cap fil esperant a la cua, el senyal es recorda per als següents fils. Hi ha dos tipus de semàfors anomenats semàfors mutex i semàfors de recompte. Els semàfors Mutex permeten un únic accés a un recurs i els semàfors de recompte permeten que diversos fils accedeixin a un recurs (que té diverses unitats disponibles).

Què és un monitor?

Un monitor és una construcció de llenguatge de programació que s'utilitza per controlar l'accés a les dades compartides. Els monitors encapsulen estructures de dades compartides, procediments (que operen en estructures de dades compartides) i sincronització entre invocacions de procediments concurrents. Un monitor s'assegura que les seves dades no s'enfronten a accessos no estructurats i garanteix que els passos (que accedeixen a les dades del monitor mitjançant els seus procediments) interactuen de manera legítima. Un monitor garanteix l'exclusió mútua en permetre que només un fil executi qualsevol procediment de monitor en un moment determinat. Si un altre fil intenta invocar un mètode al monitor, mentre que un fil ja està executant un procediment al monitor, el segon procediment es bloqueja i s'ha d'esperar a la cua. Hi ha dos tipus de monitors anomenats monitors Hoare i monitors Mesa. Principalment es diferencien en la seva semàntica de programació.

Quina diferència hi ha entre Semàfor i Monitor?

Tot i que tant els semàfors com els monitors s'utilitzen per aconseguir l'exclusió mútua en entorns de programació paral·lel, es diferencien en les tècniques utilitzades per aconseguir aquesta tasca. En els monitors, el codi que s'utilitza per aconseguir l'exclusió mútua es troba en un sol lloc i està més estructurat, mentre que el codi dels semàfors es distribueix com a trucades de funció d'espera i senyal. A més, és molt fàcil cometre errors en implementar semàfors, mentre que hi ha molt poques possibilitats d'equivocar-se en implementar monitors. A més, els monitors utilitzen variables de condició, mentre que els semàfors no.

Recomanat: