Reteszelés (programozás)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2015. július 2-án felülvizsgált verziótól ; az ellenőrzések 5 szerkesztést igényelnek .

A számítástechnikában a zár egy szinkronizálási  mechanizmus , amely több szál között lehetővé teszi a megosztott erőforrásokhoz való kizárólagos hozzáférést . A zárak az egyidejűség- ellenőrzési politika érvényesítésének egyik módja .

Zárak típusai

Alapvetően lágy zárolást használnak , amely feltételezi, hogy minden szál megpróbál zárat szerezni, mielőtt hozzáférne a megfelelő megosztott erőforráshoz. Egyes rendszerek biztosítanak egy kötelező zárolási mechanizmust, amely használatakor a zárolt erőforráshoz való jogosulatlan hozzáférési kísérlet megszakad azáltal, hogy kivételt dob ​​a hozzáférést megkísérlő szálra.

A szemafor  a zár legegyszerűbb típusa. Az adathozzáférés tekintetében nem teszünk különbséget a hozzáférési módok között: megosztott (csak olvasási) vagy exkluzív (írás-olvasás). Megosztott módban több szál kérhet zárolást, hogy csak olvasható módban hozzáférjen az adatokhoz. A kizárólagos hozzáférési módot a frissítési és törlési algoritmusok is használják.

A zárak típusait az a stratégia különbözteti meg, amely blokkolja a szál végrehajtásának folytatását. A legtöbb megvalósításban a zárolási kérés megakadályozza, hogy a szál továbbra is fusson, amíg a zárolt erőforrás elérhetővé nem válik.

A spinlock  egy olyan zár, amely egy hurokban vár, amíg a hozzáférést megadják. Az ilyen zárolás nagyon hatékony, ha egy szál kis ideig vár a zárra, így elkerülhető a szálak túlzott átütemezése. A hozzáférésre való várakozás költsége jelentős lesz, ha az egyik szál hosszú ideig tartja a zárat.

A zárszerkezet hatékony megvalósításához hardverszintű támogatás szükséges. A hardver támogatása megvalósítható egy vagy több atomi műveletként , mint például a " teszt és beállítás ", " fetch-and-add " vagy " összehasonlítás és csere ". Az ilyen utasítások lehetővé teszik a zár megszakítás nélküli ellenőrzését, és ha igen, akkor a zár megszerzését.

Egyprocesszoros rendszereken lehetőség van az utasítások hardveres megszakítások nélküli végrehajtására speciális utasítások vagy utasítás-előtagok használatával, amelyek ideiglenesen letiltják a megszakításokat, de ez a megközelítés nem működik osztott memóriás többprocesszoros rendszereken. A zárolások teljes támogatása többprocesszoros környezetben meglehetősen összetett hardver- és szoftvertámogatást igényelhet, jelentős időzítési problémákkal .

Adatbázis szintű zárolások

Jegyzetek