Különbség a semafor és a mutex között

Anonim

Semaphore vs Mutex

A Semaphore olyan adatstruktúra, amely arra szolgál, hogy több folyamat ne férhessen 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 Mutex (Kölcsönös Kizárási Objektum) egyidejűleg egyidejűleg több közös eljárással is megakadályozza a közös erőforráshoz való hozzáférést.

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 az a Mutex?

Amikor egy számítógépes alkalmazás elindul, létrehoz egy mutexet, és csatolja egy erőforráshoz. Ha az erőforrást egy szál használja, akkor zárolva van, és más szálak nem használhatják. Ha egy másik szál ugyanazt az erőforrást szeretné használni, akkor kérelmet kell benyújtania. Ezután a szálat egy sorba helyezzük, amíg az első szál befejeződik az erőforrással. Amikor az első szál befejeződik az erőforrással, a zárolás megszűnik, és a sorban várakozó szál hozzáférést nyer az erőforráshoz. Ha több sor van várakozó sorban, akkor forgalmat kapnak. Gyakorlatilag, amikor a mutex több szálon átváltoztatja az erőforráshoz való hozzáférést, akkor látható lesz, mivel több szál egyidejűleg egy erőforrást igényel. De belsőleg csak egy szál fér hozzá az erőforráshoz egy adott időpontban.

Mi a különbség a Semaphore és a Mutex között?

Habár mind a szemaforák, mind a mutex objektumok a párhuzamos programozási környezetben a kölcsönös kirekesztés elérése érdekében használatosak, vannak különbségek. A mutex objektum csak egyetlen szálon képes egy erőforrást vagy egy kritikus szakaszt elfogyasztani, míg a szemaforák korlátozott számú egyidejű hozzáférést biztosítanak egy erőforráshoz (a megengedett maximális szám alatt).A mutex objektumoknál az erőforráshoz hozzáférni szándékozó egyéb szálaknak várakozási sorban kell várniuk, amíg az aktuális szál befejeződik az erőforrás használatával.