Rozdíl mezi semaforem a monitorem

Rozdíl mezi semaforem a monitorem
Rozdíl mezi semaforem a monitorem

Video: Rozdíl mezi semaforem a monitorem

Video: Rozdíl mezi semaforem a monitorem
Video: Unix & Linux: What is the difference between LILO and GRUB? (4 Solutions!!) 2024, Červenec
Anonim

Semafor vs Monitor

Semafor je datová struktura, která se používá k zajištění toho, aby více procesů nepřistupovalo současně ke společnému zdroji nebo kritické sekci v paralelních programovacích prostředích. Semafory se používají, aby se zabránilo slepým zámkům a závodním podmínkám. Monitor je konstrukt programovacího jazyka, který se také používá k zamezení přístupu více procesů ke společnému zdroji současně, a proto zaručuje vzájemné vyloučení. Monitory k dosažení tohoto úkolu používají podmíněné proměnné.

Co je to semafor?

Semafor je datová struktura, která se používá k vzájemnému vyloučení kritických sekcí. Semafory podporují hlavně dvě operace zvané čekání (historicky známé jako P) a signál (historicky známé jako V). Operace čekání zablokuje proces, dokud se semafor neotevře a operace signálu neumožní vstoupit jinému procesu (vláknu). Každý semafor je spojen s frontou čekajících procesů. Když vlákno volá operaci čekání a je-li semafor otevřený, vlákno může pokračovat. Pokud je semafor uzavřen, když je vláknem volána operace čekání, vlákno je zablokováno a musí čekat ve frontě. Operace signálu otevře semafor, a pokud ve frontě již čeká vlákno, proces může pokračovat a pokud ve frontě žádná vlákna nečekají, signál se zapamatuje pro další vlákna. Existují dva typy semaforů nazývané mutexové semafory a počítací semafory. Semafory Mutex umožňují jediný přístup ke zdroji a počítací semafory umožňují více vláknům přístup ke zdroji (který má k dispozici několik jednotek).

Co je to monitor?

Monitor je konstrukce programovacího jazyka, která se používá k řízení přístupu ke sdíleným datům. Monitory zapouzdřují sdílené datové struktury, procedury (které fungují na sdílených datových strukturách) a synchronizaci mezi souběžnými voláními procedur. Monitor zajišťuje, že jeho data nejsou vystavena nestrukturovaným přístupům, a zaručuje, že běhouny (které přistupují k datům monitoru prostřednictvím svých postupů) interagují legitimním způsobem. Monitor zaručuje vzájemné vyloučení tím, že umožňuje pouze jednomu vláknu provádět jakoukoli monitorovací proceduru v daný čas. Pokud se jiné vlákno pokusí vyvolat metodu na monitoru, zatímco vlákno již provádí proceduru na monitoru, pak je druhá procedura zablokována a musí čekat ve frontě. Existují dva typy monitorů pojmenované monitory Hoare a monitory Mesa. Liší se především sémantikou plánování.

Jaký je rozdíl mezi Semaforem a Monitorem?

I když se semafory i monitory používají k dosažení vzájemného vyloučení v paralelních programovacích prostředích, liší se v technikách používaných k dosažení tohoto úkolu. V monitorech je kód, který se používá k dosažení vzájemného vyloučení, na jednom místě a je strukturovanější, zatímco kód pro semafory jsou distribuovány jako volání funkcí čekání a signálu. Také je velmi snadné dělat chyby při implementaci semaforů, zatímco při implementaci monitorů je velmi malá šance udělat chyby. Monitory dále používají podmínkové proměnné, zatímco semafory nikoli.

Doporučuje: