Futex

Futex

Ein Futex (engl. 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 Betriebssystemkerns vermieden werden. Im Gegensatz zum Mutex dient ein Futex deshalb zur Synchronisation von zu einem Prozess gehörenden Threads.

Die Implementierung stammt von Hubertus Franke (IBM Thomas J. Watson Research Center), Matthew Kirkwood, Ingo Molnár (Red Hat) und Rusty Russell (IBM Linux Technology Center), und wurde ab Version 2.5.7 Teil des Linux-Kernels [1].

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 selber 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 Betriebssystemkern nur dann aufgefrufen, 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 [2]. Diese Probleme wurden durch robuste Futexe behoben, die Verwendung von Futexen verlangt aber trotzdem erhöhte Aufmerksamkeit [3].

Einzelnachweise

  1. Hubertus Franke, Rusty Russell, Matthew Kirkwood, Fuss, futexes and furwocks: Fast Userlevel Locking in Linux, Ottawa Linux Symposium, 2002.
  2. Ingo Molnár, Robust futexes, Linux Kernel Documentation.
  3. Ulrich Drepper, Futexes Are Tricky, Red Hat, 2008.

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Futex — A futex (short for fast userspace mutex ) is a basic tool to implement locking and building higher level locking abstractions such as semaphores and POSIX mutexes on Linux. They first appeared in the development kernel version 2.5.7; the… …   Wikipedia

  • Futex — 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… …   Wikipédia en Français

  • Spurious wakeup — In the POSIX thread API, the function pthread cond wait is used to wait on a condition variable. A naive programmer might expect that when a thread returns from this function, the condition associated with the condition variable will be true.… …   Wikipedia

  • Exclusion Mutuelle — Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d un système ne soient utilisées en même temps. Son implémentation …   Wikipédia en Français

  • Exclusion mutuelle — Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d un système ne soient utilisées en même temps. Son implémentation …   Wikipédia en Français

  • Parallélisme (informatique) — Pour les articles homonymes, voir parallèle. Blue Gene L cabinet., un des ordinateurs massivement parallèle les plus rapides des années 2000 En informatiqu …   Wikipédia en Français

  • MontaVista Linux — основанная на Linux операционная система ориентированная на встраиваемые системы. Система разрабатывается компанией MontaVista Software (en). Содержание 1 MontaVista Linux Professional Edition 5.0 2 MontaVista Linux 6 …   Википедия

  • Native POSIX Thread Library — The Native POSIX Thread Library (NPTL) is a software feature that enables the Linux kernel to run programs written to use POSIX Threads efficiently. Contents 1 History 2 Design 3 See also 4 References …   Wikipedia

  • Compare-and-swap — (CAS) (engl. für „Vergleichen und Tauschen“) Instruktionen werden in der Informatik verwendet, um Locking und Synchronisationsoperationen zu implementieren. Eine Speicherstelle wird mit einem vorgegebenen Wert verglichen, und bei Übereinstimmung… …   Deutsch Wikipedia

  • NPTL — Die Native POSIX Thread Library (NPTL) ist eine moderne Implementierung einer Threading Bibliothek für Linux. Sie wird in Verbindung mit der GNU C Library (glibc) verwendet und erlaubt Linux Programmen die Verwendung von POSIX Threads. Geschichte …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”