Skillnaden mellan semafor och monitor

Skillnaden mellan semafor och monitor
Skillnaden mellan semafor och monitor

Video: Skillnaden mellan semafor och monitor

Video: Skillnaden mellan semafor och monitor
Video: Вопросы и ответы из интервью по Linux #1 || Что такое LILO и GRUB в Linux 2024, November
Anonim

Semaphore vs Monitor

Semaphore är en datastruktur som används för att säkerställa att flera processer inte kommer åt en gemensam resurs eller en kritisk sektion samtidigt, i parallella programmeringsmiljöer. Semaforer används för att undvika döda lås och tävlingsförhållanden. Monitor är en programmeringsspråkskonstruktion som också används för att undvika att flera processer kommer åt en gemensam resurs samtidigt och garanterar därför ömsesidig uteslutning. Övervakare använder villkorsvariabler för att utföra denna uppgift.

Vad är en semafor?

Semaphore är en datastruktur som används för att ge ömsesidig uteslutning till kritiska sektioner. Semaforer stöder huvudsakligen två operationer som kallas vänta (historiskt känd som P) och signal (historiskt känd som V). Vänteoperationen 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äntande processer. När vänteoperationen anropas av en tråd, om semaforen är öppen, kan tråden fortsätta. Om semaforen stängs när vänteoperationen anropas av en tråd, blockeras tråden och den måste vänta i kön. Signaloperationen öppnar en semafor och om det redan finns en tråd som väntar i kön tillåts den processen fortsätta och om det inte finns några trådar som väntar i kön kommer signalen att komma ihåg för nästa trådar. Det finns två typer av semaforer som kallas mutex semaforer och räkne semaforer. Mutex semaforer tillåter en enda åtkomst till en resurs och räkne semaforer tillåter flera trådar att komma åt en resurs (som har flera tillgängliga enheter).

Vad är en monitor?

En monitor är en programmeringsspråkskonstruktion som används för att kontrollera åtkomst till delad data. Övervakare kapslar in delade datastrukturer, procedurer (som fungerar på delade datastrukturer) och synkronisering mellan samtidiga proceduranrop. En övervakare ser till att dess data inte ställs inför ostrukturerade åtkomster och garanterar att steg (vilka åtkomst till övervakarens data genom sina procedurer) interagerar på ett legitimt sätt. En övervakare garanterar ömsesidig uteslutning genom att endast tillåta en tråd att utföra en övervakningsprocedure vid en given tidpunkt. Om en annan tråd försöker anropa en metod i monitorn, medan en tråd redan kör en procedur i monitorn, blockeras den andra proceduren och den måste vänta i kön. Det finns två typer av monitorer som heter Hoare monitorer och Mesa monitorer. De skiljer sig huvudsakligen åt i sin schemaläggningssemantik.

Vad är skillnaden mellan Semaphore och Monitor?

Även om både semaforerna och monitorerna används för att uppnå ömsesidig uteslutning i parallella programmeringsmiljöer, skiljer de sig åt i de tekniker som används för att uppnå denna uppgift. I monitorer finns koden som används för att uppnå ömsesidig uteslutning på ett enda ställe och är mer strukturerad, medan kod för semaforer distribueras som vänte- och signalfunktionsanrop. Det är också väldigt lätt att göra misstag när man implementerar semaforer, medan det finns en väldigt liten chans att göra misstag när man implementerar monitorer. Vidare använder monitorer tillståndsvariabler, medan semaforer inte gör det.

Rekommenderad: