Tratt (samtidig beräkning)
Inom datavetenskap är en tratt en synkroniseringsprimitiv som används i kärnutveckling för att skydda systemresurser. Används först på Digital UNIX som ett sätt att "tratta" körning av enhetsdrivrutiner till en enda processor, trattar används nu i Mac OS X- kärnan för att serialisera åtkomst till BSD -delen av XNU .
En tratt är en mekanism för ömsesidig uteslutning ( mutex ) som förhindrar mer än en tråd från att komma åt vissa kärnresurser samtidigt. Varje tråd får en tratt när den går in i en synkroniserad del av kärnan och släpper den när den lämnar den. Om en tråd blockerar (sover) medan den håller i en tratt, tvingar kärnan tråden att automatiskt tappa tratten, vilket gör att andra trådar kan komma in i den synkroniserade delen av kärnan.
Eftersom en tratt automatiskt släpps när en tråd blockeras, måste man se till att synkroniserade resurser hämtas igen efter en blockeringsoperation. Närmare bestämt kan anskaffning av en tratt vara en blockerande operation, så om flera trattar behövs måste de anskaffas samtidigt. Detta begränsar användbarheten av trattar eftersom det ökar granulariteten för låsning när flera trattar måste hållas samtidigt.
I Mac OS X
Det finns bara en tratt i OS X 10.4 och högre. Före version 10.4 finns det två trattar: en skyddar nätverksresurser och den andra skyddar andra BSD-kärnresurser. En tråd fick bara hålla en tratt åt gången, och att hålla i båda skulle orsaka kärnpanik . Som ett resultat av dessa begränsningar och bristen på granularitet fasas trattarna ut ur Mac OS X. Till exempel har nätverkstratten ersatts av finare låsmekanismer.
Se även
Anteckningar
För anteckningar som hänvisar till källor, se bibliografi nedan.
- Singh, Amit (2007). Mac OS X Internals, en systemmetod . Boston, Massachusetts : Addison-Wesley. ISBN 0-321-27854-2 .
externa länkar
- OSX Book xnu arkitekturöversikt Arkiverad 2019-04-19 på Wayback Machine .
- BSDCon 2002 papper: Avancerad synkronisering i Mac OS X .