Фьютекс
Материал из Википедии — свободной энциклопедии
Фьютекс (англ. futex, сокращение от англ. fast userspace mutex) — в программировании способ реализации семафоров и мютексов POSIX в Linux. Впервые введены в ядро с версии 2.5.7 (development); выработана стабильная семантика с 2.5.40; включаются в стабильные версии серии 2.6.x (stable).
Разработаны Уберту Франке (Hubertus Franke) (из исследовательского центра IBM им. Томаса Ватсона), сотрудниками технологического центра IBM по Linux Мэттью Кирквудом (Matthew Kirkwood) и Расти Расселом, а также разработчиком в компании Red Hat Инго Молнаром (Ingo Molnar).
Фьютекс представляет собой выровненное целое в общей памяти (для нескольких процессоров). Это целое может быть увеличено или уменьшено на единицу за одну ассемблерную инструкцию. Процессы, «завязанные» на этот фьютекс ждут, когда это значение станет положительным. Все операции с фьютексами практически полностью проводятся в пользовательском пространстве, соответствующие функции ядра задействуются лишь в ограниченном наборе спорных случаев. Это позволяет повысить эффективность использования синхронизирующих примитивов, поскольку большинство операций не используют арбитраж, а значит и избежать использование относительно дорогостоящих системных вызовов (англ. system call).
[править] Библиография
- Уберту Франке, Расти Рассел, Мэттью Кирквуд, «Шум вокруг фьютексов: Быстрая блокировка на пользовательском уровне в Linux», Симпозиум по Linux 2002 года, Оттава, [1] (англ.)
[править] Ссылки
- Страницы руководства по фьютексам (англ.)
- Хитрости с фьютексами, PDF, 11 страниц, Ульрих Дреппер (Ulrich Drepper), Red Hat (англ.)