Фьютекс

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Фьютекс (англ. 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).

Сходным образом оптимизированы объекты CRITICAL_SECTION в Win32 API, а также FAST_MUTEX в ядре Windows.[1]

Библиография

  • Уберту Франке, Расти Рассел, Мэттью Кирквуд, «Шум вокруг фьютексов: Быстрая блокировка на пользовательском уровне в Linux», Симпозиум по Linux 2002 года, Оттава, [1] (англ.)

Примечания

Ссылки

en:Futex fr:Futex zh:Futex

Личные инструменты

Served in 0.112 secs.