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, Júl
Anonim

Semafor vs Monitor

Semafor je dátová štruktúra, ktorá sa používa na zabezpečenie toho, aby viaceré procesy nepristupovali súčasne k spoločnému zdroju alebo kritickej časti v paralelných programovacích prostrediach. Semafory sa používajú na to, aby sa vyhli zablokovaniu a pretekárskym 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 používajú na splnenie tejto úlohy podmienené premenné.

Čo je to 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 nazývané čakanie (historicky známe ako P) a signál (historicky známe ako V). Operácia čakania zablokuje proces, kým sa semafor neotvorí a operácia signálu umožní vstup ďalšiemu procesu (vláknu). Každý semafor je spojený s radom čakajúcich procesov. Keď vlákno zavolá operáciu čakania, ak je semafor otvorený, vlákno môže pokračovať. Ak je semafor zatvorený, keď vlákno zavolá operáciu čakania, vlákno sa zablokuje a musí čakať vo fronte. Operácia signálu otvorí semafor a ak už vo fronte čaká vlákno, tento proces môže pokračovať a ak vo fronte nečakajú žiadne vlákna, signál sa zapamätá pre ďalšie vlákna. Existujú dva typy semaforov nazývané mutexové semafory a počítacie semafory. Semafory Mutex umožňujú jediný prístup k zdroju a počítacie semafory umožňujú viacerým vláknam prístup k zdroju (ktorý má k dispozícii niekoľko jednotiek).

Čo je 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, procedúry (ktoré fungujú na zdieľaných dátových štruktúrach) a synchronizáciu medzi súbežnými volaniami procedúr. Monitor zabezpečuje, že jeho údaje nečelia neštruktúrovaným prístupom a zaručuje, že behúne (ktoré pristupujú k údajom monitora 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 procedúru monitorovania v danom čase. Ak sa iné vlákno pokúsi vyvolať metódu v 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 monitory Hoare a monitory Mesa. Líšia sa najmä 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 paralelných programovacích prostrediach, 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 sú distribuované ako čakacie a signálne funkcie. Taktiež je veľmi ľahké robiť chyby pri implementácii semaforov, zatiaľ čo pri implementácii monitorov je veľmi malá šanca urobiť chyby. Okrem toho monitory používajú stavové premenné, zatiaľ čo semafory nie.

Odporúča: