Анатомия на техниките за синхронизация на Linux
Атомни механизми на ядрото, мутекси и спинлоки

Тази статия обхваща повечето механизми за заключване и синхронизация, внедрени в ядрото на Linux. Той осигурява интерфейси за приложно програмиране (API) за много от методите на ядрото 2.6.23. Преди обаче да се задълбочим в описанието на API, трябва да разберем проблема, който се решава.
Още статии на Тим от поредицата developerWorks
Съвпадение и блокиране
Техниките за синхронизация са необходими, когато има паралелизъм. Паралелността е ситуация, при която два или повече процеса се изпълняват едновременно, които потенциално могат да комуникират помежду си (например да използват един и същ набор от ресурси).
Съвпадение може да възникне на еднопроцесорни работни станции, където множество нишки използват един и същ процесор, изтласквайки се помежду си и създавайки условия за състезание. Предупреждението се отнася до прозрачно споделяне на процесора чрез временно спиране на една нишка, за да се позволи друга. Състезателно състояние е ситуация, при която две или повече нишки обработват едни и същи данни и резултатът зависи от реда на изпълнение. Паралелизъм съществува и на многопроцесорни машини, където едновременно изпълняващите нишки на различни процесори споделят едни и същи данни. Имайте предвид, че в случай на многопроцесорни системи има истинска паралелност, тъй като нишките се изпълняват едновременно. В случай на еднопроцесорна система, паралелизмът се създава от превантивен механизъм. И двата начина на паралелизъм имат свои собствени предизвикателства.