Linux - статьи



              

Семафоры


Семафоры — стандартное средство синхронизации процессов в Unix. Для того чтобы их можно было использовать и в SMP-системах, нужно обеспечить атомарность изменения счетчика семафора, поэтому в многопроцессорных версиях функций up (увеличение счетчика семафора) и down (его уменьшение) также используются атомарные команды (для i386 с префиксом lock). Основное отличие семафора от атомарных операций в том, что он предоставляет стандартный сервис, доступный для пользовательских программ. Есть варианты семафоров, которые останавливают процесс, пока не будут открыты, а есть не блокируемые семафоры, помеченные суффиксом interruptible. Для некоторых платформ семафор базируется на атомарных операциях, а для остальных оказалось лучше написать отдельный, более эффективный код. В частности, для платформы i386 пошли по второму варианту. Впрочем, в общем коде ядра семафоры используются достаточно редко, чаще встречается его частный случай — спин-блокировка.




Содержание  Назад  Вперед