About: Futex

An Entity of Type: work, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

In computing, a futex (short for "fast userspace mutex") is a kernel system call that programmers can use to implement basic locking, or as a building block for higher-level locking abstractions such as semaphores and POSIX mutexes or condition variables.

Property Value
dbo:abstract
  • Ein Futex (englisch fast userspace mutual exclusion etwa „schneller gegenseitiger Ausschluss im Userspace“) ist ein Mutex-Lockingmechanismus, der vom Betriebssystem Linux unterstützt wird. Die Besonderheit der Futex-Implementierung liegt darin, dass ein Großteil der Operationen im Userspace ausgeführt wird, und dadurch teure Aufrufe des Kernels vermieden werden. Im Gegensatz zum Mutex dient ein Futex deshalb zur Synchronisation von zu einem Prozess gehörenden Threads. Die Implementierung stammt von (IBM Thomas J. Watson Research Center), , Ingo Molnár (Red Hat) und Rusty Russell, und wurde ab Version 2.5.7 Teil des Linux-Kernels. Wie ein Mutex ist ein Futex eine Speicherstelle, die von verschiedenen Prozessen durch Sperr- und Entsperroperationen (lock/unlock) atomar verändert wird. Die Sperroperation stellt dabei sicher, dass alle Prozesse blockiert werden, die einen schon gesperrten Futex selbst sperren möchten (gegenseitiger Ausschluss). Im Gegensatz zu Mutexen werden die Futex-Operationen aber in den statistisch relevanten Fällen im User Space (d. h. direkt vom laufenden Programm) ausgeführt und der Kernel nur dann aufgerufen, wenn ein Prozess blockiert oder aktiviert werden muss. Linux unterstützt Futexe für die meisten, aber nicht für alle Prozessor-Architekturen. Im Allgemeinen implementiert ein User-Programm die Futex-Operationen nicht direkt, sondern es verwendet die "pthread_mutex..." Funktionen in libc, die automatisch je nach Prozessor-Architektur Futexe oder eine interprozess-Mutex-Implementierung verwenden. Dadurch, dass nicht bei jedem Aufruf das Betriebssystem involviert ist, sind Futexe im Allgemeinen effizienter. Da das Betriebssystem aber nicht mehr die Kontrolle über alle Locks hat, kam es in der Anfangsphase teilweise zu Problemen, wenn Prozesse mit gesperrtem Futex abgestürzt sind. Diese Probleme wurden durch robuste Futexe behoben, die Verwendung von Futexen verlangt aber trotzdem erhöhte Aufmerksamkeit. (de)
  • In computing, a futex (short for "fast userspace mutex") is a kernel system call that programmers can use to implement basic locking, or as a building block for higher-level locking abstractions such as semaphores and POSIX mutexes or condition variables. A futex consists of a kernelspace wait queue that is attached to an atomic integer in userspace. Multiple processes or threads operate on the integer entirely in userspace (using atomic operations to avoid interfering with one another), and only resort to relatively expensive system calls to request operations on the wait queue (for example to wake up waiting processes, or to put the current process on the wait queue). A properly programmed futex-based lock will not use system calls except when the lock is contended; since most operations do not require arbitration between processes, this will not happen in most cases. (en)
  • Un Futex (anglais : Fast Userspace Mutex) est un mécanisme élémentaire et rapide de verrouillage en mode utilisateur, qui permet également de construire des éléments plus élaborés tels que les sémaphores ou les mutex POSIX sous Linux. Les Futex sont apparus sous Linux à partir de la version 2.5.7, et en série dans les versions 2.6.x du noyau. Ils ont été créés par Hubertus Franke (ingénieur chez IBM), Matthew Kirkwood, Ingo Molnar (Red Hat) et Rusty Russell (IBM Linux Technology Center). Un Futex comporte un bout de mémoire (un entier), qui est partagé entre les processus actifs. Ce nombre est incrémenté ou décrémenté par des instructions atomiques (indivisibles). Les processus doivent attendre que ce nombre redevienne positif pour se lancer. (fr)
  • 컴퓨터 과학에서 futex(fast userspace mutex, 빠른 사용자 공간 상호 배제, 퓨텍스)는 개발자가 기본적인 잠금을 구현하기 위해 사용되거나 세마포어, POSIX 뮤텍스, 조건 변수와 같은 상위 계층의 잠금 추상화를 위한 빌딩 블록으로서 쓰일 수 있는 리눅스 커널에서 제공하는 시스템 호출이다. (ko)
  • Фьютекс (англ. futex, сокращение от англ. fast userspace mutex) — низкоуровневый легковесный примитив синхронизации, на основе которого реализуются другие примитивы и механизмы, такие как мьютексы, семафоры и условные переменные. Также фьютексы могут участвовать и в организации более сложных механизмов синхронизации, таких как барьеры и блокировки чтения-записи, позволяя одновременно пробуждать группу задач. Изначально был представлен в ранних версиях ядра Linux 2.5. Позднее практически идентичный примитив был реализован и в ядре Windows. (ru)
  • futex(快速用户区互斥的简称)是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的基本工具。它们第一次出现在内核开发的2.5.7版;其语义在2.5.40固定下来,然后在2.6.x系列稳定版内核中出现。 Futex 是由(IBM ), ,(Red Hat)和 ()等人创建的。 Futex 由一块能够被多个进程共享的空间(一个对齐后的整型变量)组成;这个整型变量的值能够通过汇编语言调用CPU提供的原子操作指令来增加或减少,并且一个进程可以等待直到那个值变成正数。Futex 的操作几乎全部在用户空间完成;只有当操作结果不一致从而需要仲裁时,才需要进入操作系统内核空间执行。这种机制允许使用 futex 的锁定原语有非常高的执行效率:由于绝大多数的操作并不需要在多个进程之间进行仲裁,所以绝大多数操作都可以在应用程序空间执行,而不需要使用(相对高代价的)内核系统调用。 (zh)
  • Ф'ютекс (англ. 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 calls). Подібним чином оптимізовані об'єкти CRITICAL_SECTION у Win32 API, а також FAST_MUTEX в ядрі Windows. (uk)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 680285 (xsd:integer)
dbo:wikiPageLength
  • 7653 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1120774324 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdf:type
rdfs:comment
  • 컴퓨터 과학에서 futex(fast userspace mutex, 빠른 사용자 공간 상호 배제, 퓨텍스)는 개발자가 기본적인 잠금을 구현하기 위해 사용되거나 세마포어, POSIX 뮤텍스, 조건 변수와 같은 상위 계층의 잠금 추상화를 위한 빌딩 블록으로서 쓰일 수 있는 리눅스 커널에서 제공하는 시스템 호출이다. (ko)
  • Фьютекс (англ. futex, сокращение от англ. fast userspace mutex) — низкоуровневый легковесный примитив синхронизации, на основе которого реализуются другие примитивы и механизмы, такие как мьютексы, семафоры и условные переменные. Также фьютексы могут участвовать и в организации более сложных механизмов синхронизации, таких как барьеры и блокировки чтения-записи, позволяя одновременно пробуждать группу задач. Изначально был представлен в ранних версиях ядра Linux 2.5. Позднее практически идентичный примитив был реализован и в ядре Windows. (ru)
  • futex(快速用户区互斥的简称)是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的基本工具。它们第一次出现在内核开发的2.5.7版;其语义在2.5.40固定下来,然后在2.6.x系列稳定版内核中出现。 Futex 是由(IBM ), ,(Red Hat)和 ()等人创建的。 Futex 由一块能够被多个进程共享的空间(一个对齐后的整型变量)组成;这个整型变量的值能够通过汇编语言调用CPU提供的原子操作指令来增加或减少,并且一个进程可以等待直到那个值变成正数。Futex 的操作几乎全部在用户空间完成;只有当操作结果不一致从而需要仲裁时,才需要进入操作系统内核空间执行。这种机制允许使用 futex 的锁定原语有非常高的执行效率:由于绝大多数的操作并不需要在多个进程之间进行仲裁,所以绝大多数操作都可以在应用程序空间执行,而不需要使用(相对高代价的)内核系统调用。 (zh)
  • Ein Futex (englisch fast userspace mutual exclusion etwa „schneller gegenseitiger Ausschluss im Userspace“) ist ein Mutex-Lockingmechanismus, der vom Betriebssystem Linux unterstützt wird. Die Besonderheit der Futex-Implementierung liegt darin, dass ein Großteil der Operationen im Userspace ausgeführt wird, und dadurch teure Aufrufe des Kernels vermieden werden. Im Gegensatz zum Mutex dient ein Futex deshalb zur Synchronisation von zu einem Prozess gehörenden Threads. Linux unterstützt Futexe für die meisten, aber nicht für alle Prozessor-Architekturen. (de)
  • In computing, a futex (short for "fast userspace mutex") is a kernel system call that programmers can use to implement basic locking, or as a building block for higher-level locking abstractions such as semaphores and POSIX mutexes or condition variables. (en)
  • Un Futex (anglais : Fast Userspace Mutex) est un mécanisme élémentaire et rapide de verrouillage en mode utilisateur, qui permet également de construire des éléments plus élaborés tels que les sémaphores ou les mutex POSIX sous Linux. Les Futex sont apparus sous Linux à partir de la version 2.5.7, et en série dans les versions 2.6.x du noyau. Ils ont été créés par Hubertus Franke (ingénieur chez IBM), Matthew Kirkwood, Ingo Molnar (Red Hat) et Rusty Russell (IBM Linux Technology Center). (fr)
  • Ф'ютекс (англ. 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). (uk)
rdfs:label
  • Futex (de)
  • Futex (en)
  • Futex (fr)
  • Futex (ko)
  • Фьютекс (ru)
  • Ф'ютекс (uk)
  • Futex (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:homepage
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License