Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Фьютекс (англ. futex, сокращение от англ. fast userspace mutex) — низкоуровневый легковесный примитив синхронизации[1], на основе которого реализуются другие примитивы и механизмы, такие как мьютексы, семафоры и условные переменные[2]. Также фьютексы могут участвовать и в организации более сложных механизмов синхронизации, таких как барьеры и блокировки чтения-записи, позволяя одновременно пробуждать группу задач. Изначально был представлен в ранних версиях ядра Linux 2.5[1]. Позднее практически идентичный примитив был реализован и в ядре Windows[3].

История

Впервые появились в ядре Linux версии 2.5.7, стабилизация семантики закончилась в версии 2.5.40[источник не указан 1614 дней].

Разработаны Уберту Франке (Hubertus Franke) (из исследовательского центра IBM им. Томаса Ватсона), сотрудниками технологического центра IBM по Linux Мэттью Кирквудом (Matthew Kirkwood) и Расти Расселом, а также разработчиком в компании Red Hat Инго Молнаром (Ingo Molnar).

Общие сведения

Фьютекс представляет собой выровненное целое в общей памяти (для нескольких процессоров) в пользовательском пространстве и очередь ожидания в пространстве ядра[4]. Для организации фьютекса требуется, по крайней мере, одна страница памяти, отображённая в адресное пространство каждого из участвующих во фьютексе процессов. Системные вызовы предназначены только для потоковых библиотек пользовательского пространства и только в виде команд ассемблера[5].

Разделяемое целое может быть увеличено или уменьшено на единицу за одну ассемблерную инструкцию. Процессы, «завязанные» на этот фьютекс, ждут, когда это значение станет положительным. Все операции с фьютексами практически полностью проводятся в пользовательском пространстве (при отсутствии соперничества[6]), соответствующие функции ядра задействуются лишь в ограниченном наборе спорных случаев. Это позволяет повысить эффективность использования синхронизирующих примитивов, поскольку большинство операций не использует арбитраж, а значит, и избежать использования относительно дорогостоящих системных вызовов (англ. system calls).

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

Примечания

  1. 1 2 Ulrich Drepper. Futexes Are Tricky (англ.) (PDF). Red Hat, Inc. (11 декабря 2005). Дата обращения: 16 июня 2019. Архивировано из оригинала 16 июня 2019 года.
  2. Rémi Denis-Courmont. Other uses of futex (англ.). Remlab. Remlab.net (21 сентября 2016). Дата обращения: 17 июня 2019. Архивировано 17 июня 2019 года.
  3. Rémi Denis-Courmont. Condition variable with futex (англ.). Remlab. Remlab.net (21 сентября 2016). Дата обращения: 16 июня 2019. Архивировано 16 июня 2019 года.
  4. Oshana, 2015, 8.12 Stay Out of the Kernel If at all Possible.
  5. Scott, 2013.
  6. Doug Abbott. Pthreads Implementations // Linux for Embedded and Real-time Applications, 3rd Edition. — Newnes, 2012. — 296 с. — ISBN 978-0-12-391433-0.
  7. Break Free of Code Deadlocks in Critical Sections Under Windows. Дата обращения: 13 января 2010. Архивировано 24 декабря 2013 года.

Литература

  • Уберту Франке, Расти Рассел, Мэттью Кирквуд, «Шум вокруг фьютексов: Быстрая блокировка на пользовательском уровне в Linux», Симпозиум по Linux 2002 года, Оттава, [1]  (англ.)
  • Karim Yaghmour, Jon Masters, Gilad Ben-Yossef. Building Embedded Linux Systems. — "O'Reilly Media, Inc.", 2008. — P. 400. — ISBN 978-0-596-55505-4.
  • Robert Oshana. Multicore Software Development Techniques. — Newnes, 2015. — 236 p. — ISBN 978-0-12-801037-2.
  • Michael L. Scott. Shared-Memory Synchronization. — Morgan & Claypool Publishers, 2013. — 221 с. — ISBN 978-1-60845-957-5.

Ссылки

Эта страница в последний раз была отредактирована 5 октября 2022 в 05:12.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).