Linux - статьи

Атомарные операции


Под атомарными операциями подразумеваются команды изменения данных в оперативной памяти, которые выполняются процессором с полной блокировкой шины памяти, т. е. ни один другой процессор гарантированно не будет конкурировать с монополистом. Так, на платформе i386, для реализации атомарных операций используется специально для этого предназначенный командный префикс lock, заставляющий процессор выполнять следующую команду с блокировкой шины памяти. В Linux в качестве атомарной выбраны операции инкремента и декремента с проверкой счетчика на равенство нулю. (Архитектура i386 также содержит команду test and set bit, которая используется для атомарного изменения бита с одновременной проверкой его.)

Эти примитивы являются наиболее общими случаями для координации параллельных вычислений, на основе которых можно построить семафоры, спин-блокировку и другие, более сложные механизмы координации работы процессоров. Однако для семафоров и спин-блокировок, как частных случаев, есть более эффективные реализации. Впрочем, на некоторых платформах, таких как PowerPC или S390, семафоры реализованы через атомарные операции. В общем коде ядра атомарные операции достаточно распространены.



Содержание раздела