Verschil Tussen Semafoor En Monitor

Verschil Tussen Semafoor En Monitor
Verschil Tussen Semafoor En Monitor

Video: Verschil Tussen Semafoor En Monitor

Video: Verschil Tussen Semafoor En Monitor
Video: What's the Difference Between Monitors and TVs? 2024, Mei
Anonim

Semafoor versus monitor

Semaphore is een datastructuur die wordt gebruikt om ervoor te zorgen dat meerdere processen niet tegelijkertijd toegang hebben tot een gemeenschappelijke bron of een kritieke sectie, in parallelle programmeeromgevingen. Semaforen worden gebruikt om dead locks en race-omstandigheden te voorkomen. Monitor is een programmeertaalconstructie die ook wordt gebruikt om te voorkomen dat meerdere processen tegelijkertijd toegang krijgen tot een gemeenschappelijke bron en daarom wederzijdse uitsluiting garandeert. Monitors gebruiken voorwaardelijke variabelen om deze taak uit te voeren.

Wat is een semafoor?

Semafoor is een gegevensstructuur die wordt gebruikt om wederzijdse uitsluiting te bieden aan kritieke secties. Semaforen ondersteunen voornamelijk twee bewerkingen genaamd wachten (historisch bekend als P) en signaal (historisch bekend als V). De wachtbewerking blokkeert een proces totdat de semafoor open is en de signaalbewerking laat een ander proces (thread) binnen. Elke semafoor is gekoppeld aan een rij wachtende processen. Als de wachtbewerking wordt aangeroepen door een thread en de semafoor open is, kan de thread doorgaan. Als de semafoor wordt gesloten wanneer de wachtbewerking wordt aangeroepen door een thread, wordt de thread geblokkeerd en moet deze in de wachtrij wachten. De signaalbewerking opent een semafoor en als er al een thread in de wachtrij staat, mag dat proces doorgaan en als er geen threads in de wachtrij wachten, wordt het signaal onthouden voor de volgende threads. Er zijn twee soorten semaforen genaamd mutex semaforen en tellen semaforen. Mutex-semaforen maken een enkele toegang tot een bron mogelijk en met semaforen tellen kunnen meerdere threads toegang krijgen tot een bron (die meerdere eenheden beschikbaar heeft).

Wat is een monitor?

Een monitor is een programmeertaalconstructie die wordt gebruikt om de toegang tot gedeelde gegevens te regelen. Monitors kapselen gedeelde datastructuren, procedures (die werken op gedeelde datastructuren) en synchronisatie tussen gelijktijdige procedure-aanroepen in. Een monitor zorgt ervoor dat zijn gegevens niet worden geconfronteerd met ongestructureerde toegangen en garandeert dat treads (die toegang krijgen tot de gegevens van de monitor via zijn procedures) op een legitieme manier samenwerken. Een monitor garandeert wederzijdse uitsluiting door slechts één thread tegelijkertijd een monitorprocedure te laten uitvoeren. Als een andere thread een methode op de monitor probeert aan te roepen, terwijl een thread al een procedure in de monitor uitvoert, wordt de tweede procedure geblokkeerd en moet deze in de wachtrij wachten. Er zijn twee soorten monitoren genaamd Hoare-monitoren en Mesa-monitoren. Ze verschillen voornamelijk in hun planningssemantiek.

Wat is het verschil tussen Semaphore en Monitor?

Hoewel zowel de semaforen als de monitoren worden gebruikt om wederzijdse uitsluiting te bereiken in parallelle programmeeromgevingen, verschillen ze in de technieken die worden gebruikt om deze taak te volbrengen. In monitors bevindt de code die wordt gebruikt om wederzijdse uitsluiting te bereiken zich op één plaats en is meer gestructureerd, terwijl code voor semaforen wordt gedistribueerd als wacht- en signaalfunctie-oproepen. Het is ook heel gemakkelijk om fouten te maken bij het implementeren van semaforen, terwijl er een zeer kleine kans is om fouten te maken bij het implementeren van monitoren. Verder gebruiken monitors conditievariabelen, terwijl semaforen dat niet doen.

Aanbevolen: