Különbség a szemafor és a monitor között
Semaphore vs Monitor
A Semaphore egy olyan adatszerkezet, amelyet annak biztosítására használnak, hogy több folyamat ne férhessenek hozzá egy közös erőforrás vagy kritikus szakasz egyidejűleg, párhuzamos programozási környezetekben. Szemáfákat használnak az elhalt zárak és a verseny körülményeinek elkerülésére. A Monitor olyan programozási nyelvű konstrukció, amelyet arra is használnak, hogy elkerüljék a közös erőforráshoz való egyszerre több folyamatot, így biztosítva a kölcsönös kirekesztést. A monitorok ezt a feladatot a feltételes változók használatára használják.
Mi az a szemafor?
A Semaphore egy olyan adatszerkezet, amelyet a kritikus szakaszok kölcsönös kizárásának biztosítására használnak. A szeméfforok elsősorban két műveletet támogatnak, a várakozást (történetileg P) és a jelet (történetileg V). A várakoztatási művelet blokkolja a folyamatot, amíg a szemafor nyílik, és a jel művelet lehetővé teszi egy másik folyamat (thread) beírását. Mindegyik szemaforhoz tartozik egy várakozási sor várakozási sor. Ha a várakozási műveletet egy szál hívja, ha a szemafor nyitva van, a szál folytatódhat. Ha a szemafor zárva van, amikor a várakozási műveletet egy szál hívja, akkor a szál blokkolva van és meg kell várnia a sorban. A jel művelet megnyitja a szemaforát, és ha van egy sor, amelyik már várakozik a sorban, ez a folyamat folytatódhat, és ha nincsenek szálak várakoznak a sorban, akkor a jel a következő szálakra emlékszik. Kétféle típusú szemaforak nevezhetők mutex szemaforáknak és számolási szemaforoknak. A Mutex szemaforák egyetlen erőforráshoz való hozzáférést tesz lehetővé, és a szemaforák számlálása lehetővé teszi több szál számára egy erőforrás elérését (amely több egység áll rendelkezésre).
Mi a Monitor?
A monitor olyan programozási nyelv-konstrukció, amely a megosztott adatokhoz való hozzáférés szabályozására szolgál. A monitorok megosztják a megosztott adatstruktúrákat, eljárásokat (amelyek megosztott adatstruktúrákon működnek) és szinkronizálják a párhuzamos eljáráshívásokat. A monitor gondoskodik róla, hogy az adatok ne legyenek strukturálatlan hozzáférésekkel, és garantálja, hogy a futófelületek (amelyek hozzáférnek a monitor adataihoz az eljárásain keresztül) törvényes módon működnek együtt. A monitor garantálja a kölcsönös kizárást, ha csak egy szálat engedélyez egy adott időtartamú monitorozási eljárás végrehajtásához. Ha egy másik szál megpróbál felhívni egy eljárást a monitoron, míg a szál már végrehajt egy eljárást a monitoron, akkor a második eljárás blokkolva van, és várnia kell a sorban. A Hoare monitorok és a Mesa monitorok kétféle típusa létezik. Ezek elsősorban ütemezési szemantikájukban különböznek egymástól.
Mi a különbség a Semaphore és a Monitor között?
Habár mind a szemaforákat, mind a monitorokat a párhuzamos programozási környezetek közötti kölcsönös kirekesztés elérése érdekében használják, azok különböznek a feladatok eléréséhez használt technikákban.A monitorok esetében a közös kizárás elérésére használt kód egyetlen helyen van, és strukturáltabb, míg a szemaforák kódja várakozási és jelfüggvényhívásokként oszlik meg. Továbbá nagyon könnyű hibákat követni a szemaforák végrehajtásakor, miközben nagyon kevés eshetőség van arra, hogy hibákat követeljen a monitorok végrehajtásakor. Továbbá a monitorok a kondícióváltozókat használják, míg a szemaforok nem.