Rozdiel Medzi Semaforom A Monitorom

Rozdiel Medzi Semaforom A Monitorom
Rozdiel Medzi Semaforom A Monitorom

Video: Rozdiel Medzi Semaforom A Monitorom

Video: Rozdiel Medzi Semaforom A Monitorom
Video: Кибер-кринж байки и гейминг на ЭЛТ телевизоре / Рассказываю как и почему! 2024, Smieť
Anonim

Semafor vs Monitor

Semafor je dátová štruktúra, ktorá sa používa na zabezpečenie toho, aby viaceré procesy v paralelnom programovacom prostredí nemali prístup k spoločnému prostriedku alebo kritickej sekcii súčasne. Semafory sa používajú na to, aby sa zabránilo zablokovaniu a rasovým podmienkam. Monitor je konštrukt programovacieho jazyka, ktorý sa tiež používa na zabránenie prístupu viacerých procesov k spoločnému zdroju súčasne, a preto zaručuje vzájomné vylúčenie. Monitory na dosiahnutie tejto úlohy používajú podmienené premenné.

Čo je semafor?

Semafor je dátová štruktúra, ktorá sa používa na vzájomné vylúčenie kritických častí. Semafory podporujú hlavne dve operácie zvané počkajte (historicky známe ako P) a signálne (historicky známe ako V). Operácia čakania blokuje proces, kým nie je otvorený semafor, a operácia signálu umožňuje vstup ďalšiemu procesu (vláknu). Každý semafor je spojený s radom čakacích procesov. Keď je operácia čakania volaná vláknom, ak je semafor otvorený, vlákno môže pokračovať. Ak je semafor uzavretý, keď je operácia čakania volaná vláknom, vlákno je blokované a musí čakať vo fronte. Signálna operácia otvorí semafor a ak vo fronte už čaká vlákno, môže tento proces pokračovať a ak vo fronte už nečakajú žiadne vlákna, signál sa zapamätá pre ďalšie vlákna. Existujú dva typy semaforov, ktoré sa nazývajú mutexové semafory a počítacie semafory. Mutexové semafory umožňujú jediný prístup k prostriedku a počítacie semafory umožňujú viacerým vláknam prístup k prostriedku (ktorý má k dispozícii niekoľko jednotiek).

Čo je to Monitor?

Monitor je konštrukcia programovacieho jazyka, ktorá sa používa na riadenie prístupu k zdieľaným údajom. Monitory zapuzdrujú zdieľané dátové štruktúry, postupy (ktoré fungujú na zdieľaných dátových štruktúrach) a synchronizáciu medzi vyvolaním súbežných procedúr. Monitor sa ubezpečuje, že jeho údaje nie sú vystavené neštruktúrovaným prístupom, a zaručuje, že behúne (ktoré k svojim údajom pristupujú prostredníctvom svojich postupov) interagujú legitímnym spôsobom. Monitor zaručuje vzájomné vylúčenie tým, že umožňuje iba jednému vláknu vykonať akýkoľvek postup monitora v danom čase. Ak sa iné vlákno pokúsi vyvolať metódu na monitore, zatiaľ čo vlákno už vykonáva procedúru na monitore, potom je druhá procedúra zablokovaná a musí čakať vo fronte. Existujú dva typy monitorov s názvom Hoare monitors a Mesa monitors. Líšia sa hlavne svojou sémantikou plánovania.

Aký je rozdiel medzi Semaforom a Monitorom?

Aj keď sa semafory aj monitory používajú na dosiahnutie vzájomného vylúčenia v prostrediach paralelného programovania, líšia sa v technikách použitých na dosiahnutie tejto úlohy. V monitoroch je kód, ktorý sa používa na dosiahnutie vzájomného vylúčenia, na jednom mieste a je štruktúrovanejší, zatiaľ čo kód pre semafory sa distribuuje ako čakanie a volanie signálnej funkcie. Pri implementácii semaforov je tiež veľmi ľahké robiť chyby, zatiaľ čo pri implementácii monitorov je veľmi malá šanca robiť chyby. Monitory ďalej používajú premenné podmienok, zatiaľ čo semafory nie.

Odporúčaná: