Skillnad mellan semaphore och monitor

Semaphore vs Monitor

Semaphore är en datastruktur som används för att säkerställa att flera processer inte åtkomst till en gemensam resurs eller en kritisk sektion samtidigt i parallella programmeringsmiljöer. Semaforer används för att undvika döda lås och löpförhållanden. Monitor är en programmeringsspråkskonstruktion som också används för att undvika att flera processer får tillgång till en gemensam resurs samtidigt garanterar ömsesidig uteslutning. Bildskärmar använder villkorliga variabler för att uppnå denna uppgift.

Vad är en Semaphore?

Semaphore är en datastruktur som används för att ge gemensam uteslutning till kritiska avsnitt. Semaforer stöder främst två operationer som kallas vänta (historiskt känd som P) och signal (historiskt känd som V). Vänta operationen blockerar en process tills semaforen är öppen och signaloperationen tillåter en annan process (tråd) att komma in. Varje semafor är associerad med en kö av väntprocesser. När vänteläge kallas av en tråd, om semaphore är öppen kan tråden fortsätta. Om semaforen stängs när väntetiden kallas av en tråd, är tråden blockerad och den måste vänta i kön. Signaloperationen öppnar en semafor och om det finns en tråd som väntar i kön, får processen fortsätta och om det inte finns några trådar som väntar i kön, kommer signalen ihåg för nästa tråd. Det finns två typer av semaforer som heter mutex semaforer och räknar semaforer. Mutex semaforer tillåter en enda åtkomst till en resurs och räknar semaforer tillåter flera trådar att komma åt en resurs (som har flera enheter tillgängliga).

Vad är en Monitor?

En bildskärm är en programmeringsspråkskonstruktion som används för att styra åtkomst till delad data. Bildskärmar inkapslar delade datastrukturer, procedurer (som fungerar på delade datastrukturer) och synkronisering mellan samtidiga procedurinställningar. En bildskärm säkerställer att dess data inte står inför ostrukturerad åtkomst och garanterar att slitbanor (vilken åtkomstskärmens data genom sina procedurer) samverkar på ett legitimt sätt. En bildskärm garanterar ömsesidig uteslutning genom att endast tillåta en tråd att utföra något övervakningsförfarande vid en given tidpunkt. Om en annan tråd försöker anropa en metod i bildskärmen, medan en tråd redan utför en procedur i bildskärmen, är den andra proceduren blockerad och den måste vänta i kön. Det finns två typer av bildskärmar som heter Hoare-skärmar och Mesa-skärmar. De skiljer sig huvudsakligen från sin planeringssemantik.

Vad är skillnaden mellan Semaphore och Monitor?

Även om både semaforerna och bildskärmarna används för att uppnå ömsesidigt uteslutande i parallella programmeringsmiljöer, skiljer de sig från de tekniker som används för att uppnå denna uppgift. I bildskärmar är koden som används för att uppnå ömsesidig uteslutning på en enda plats och mer strukturerad, medan kod för semaforer distribueras som vänta- och signalfunktionssamtal. Det är också mycket lätt att göra misstag vid genomförandet av semaforer, medan det finns en mycket liten chans att göra misstag när man genomför monitorer. Vidare övervakar användningsvillkor variabler, medan semaforer inte gör det.