Semaphore vs Monitor
Semaphore is 'n datastruktuur wat gebruik word om seker te maak dat veelvuldige prosesse nie op dieselfde tyd toegang tot 'n gemeenskaplike hulpbron of 'n kritieke afdeling in parallelle programmeringsomgewings verkry nie. Semafore word gebruik om dooie slotte en wedrentoestande te vermy. Monitor is 'n programmeertaalkonstruk wat ook gebruik word om te verhoed dat veelvuldige prosesse terselfdertyd toegang tot 'n gemeenskaplike hulpbron kry, waarborg dus wedersydse uitsluiting. Monitors gebruik voorwaardelike veranderlikes om hierdie taak te bereik.
Wat is 'n semafoor?
Semaphore is 'n datastruktuur wat gebruik word om wedersydse uitsluiting aan kritieke afdelings te verskaf. Semafore ondersteun hoofsaaklik twee bewerkings genaamd wag (histories bekend as P) en sein (histories bekend as V). Die wag-operasie blokkeer 'n proses totdat die semafoor oop is en die seinbewerking laat 'n ander proses (draad) toe om in te gaan. Elke semafoor word geassosieer met 'n tou wagprosesse. Wanneer die wag-operasie deur 'n draad geroep word, as die semafoor oop is, kan die draad voortgaan. As die semafoor gesluit word wanneer die wag-operasie deur 'n draad geroep word, word die draad geblokkeer en moet dit in die tou wag. Die seinoperasie maak 'n semafoor oop en as daar 'n draad is wat reeds in die tou wag, word daardie proses toegelaat om voort te gaan en as daar geen drade in die tou wag nie, word die sein vir die volgende drade onthou. Daar is twee tipes semafore genoem mutex semafore en tel semafore. Mutex semafore laat 'n enkele toegang tot 'n hulpbron toe en tel semafore laat verskeie drade toe om toegang te verkry tot 'n hulpbron (wat verskeie eenhede beskikbaar het).
Wat is 'n monitor?
'n Monitor is 'n programmeertaalkonstruksie wat gebruik word om toegang tot gedeelde data te beheer. Monitors omsluit gedeelde datastrukture, prosedures (wat op gedeelde datastrukture werk) en sinchronisasie tussen gelyktydige prosedure-aanroepe. 'n Monitor maak seker dat sy data nie met ongestruktureerde toegang te kampe het nie en waarborg dat treads (wat toegang tot monitor se data deur middel van sy prosedures verkry) op 'n wettige wyse in wisselwerking tree. 'n Monitor waarborg wedersydse uitsluiting deur slegs een draad toe te laat om enige monitorprosedure op 'n gegewe tydstip uit te voer. As 'n ander draad 'n metode in die monitor probeer oproep, terwyl 'n draad reeds 'n prosedure in die monitor uitvoer, dan word die tweede prosedure geblokkeer en dit moet in die tou wag. Daar is twee tipes monitors genaamd Hoare monitors en Mesa monitors. Hulle verskil hoofsaaklik in hul skedulering semantiek.
Wat is die verskil tussen Semafoor en Monitor?
Selfs al word beide die semafore en monitors gebruik om wedersydse uitsluiting in parallelle programmeringsomgewings te bewerkstellig, verskil hulle in die tegnieke wat gebruik word om hierdie taak te bereik. In monitors is die kode wat gebruik word om wedersydse uitsluiting te bewerkstellig op 'n enkele plek en is meer gestruktureerd, terwyl kode vir semafore as wag- en seinfunksie-oproepe versprei word. Dit is ook baie maklik om foute te maak wanneer semafore geïmplementeer word, terwyl daar 'n baie min kans is om foute te maak wanneer monitors geïmplementeer word. Verder gebruik monitors toestandsveranderlikes, terwyl semafore dit nie doen nie.