Big Kernel Lock

Big Kernel Lock

Der Big Kernel Lock, kurz BKL, ist eine Technologie, die mit Linux 2.0 im Jahr 1996 eingeführt wurde, um die Ausführung von Kernelcode durch mehrere Prozessoren bzw. Kerne auf Multiprozessorsystemen zu verwalten. Der BKL verhindert, dass mehrere Kernel-(Sub-)Prozesse gleichzeitig (evtl. auf mehreren Kernen/Prozessoren) laufen, und schützt damit den Kernel (bzw. die Hardware) vor konkurrierenden Zugriffen auf Ressourcen wie System-Dateien auf der Festplatte. Im Grunde ist der BKL also ein Spinlock, bei dem ein Prozess eine Sperrvariable auf „gesperrt“ setzt, solange er z. B. auf die Festplatte zugreift. Hier setzt allerdings der Kernel selbst den Lock.

Inhaltsverzeichnis

Geschichte

BKL wurde mit Kernel 2.0 (1996) eingeführt, um die Nutzung von Multiprozessorsystemen zu ermöglichen. Nachdem Leistungseinbußen (s. Probleme) festgestellt wurden, wurde in Kernel 2.2 der separate I/O-Lock für das Input/Output-Subsystem eingeführt. Diese Aufsplittung in kleinere Locks für Subsysteme wurde bis 2.6 (aktuelle Generation) fortgeführt, was zu sehr kleinen Einzellocks (sogenannten fine-grained locks, übersetzt „feinkörnige Locks“) führte, mit denen nur kleine Bereiche „gelockt“ werden können.

In Kernel 2.6.37 wurde der BKL generell und weitgehend abgeschafft[1], wobei bestimmte Dateisystemtreiber wie der UDF-Treiber den BKL noch brauchen, was aber durch Patches in Linux 2.6.38 gelöst wird. Im Kernel-Kompilierungsvorgang gibt es jetzt eine neue Option, mit der das Kompilieren komplett ohne BKL-Unterstützung möglich ist.[2][3] Mit Version 2.6.39 wurde die Unterstützung für BKL endgültig aus dem Kernel entfernt.[4]

Nutzung und Vorkommen

Im Quelltext von Kernel 2.6 existieren trotz der Ausstiegsstrategie immer noch ungefähr 500 BKL-Aufrufe (lock_kernel()).

Das rührt einerseits daher, dass in den Tiefen des Kernels noch solche Aufrufe behalten werden, beispielsweise für die Aufrufe reboot() oder sysctl(). Ebenfalls läuft der frühe Bootprozess mit eingeschaltetem BKL. Intensiv wird BKL auch von älteren Dateisystemtreibern genutzt, dazu gehören u. a. UFS, Coda, HPFS, das oft auf portablen Speichermedien eingesetzte FAT oder das Minix-Dateisystem. Auch gibt es einzelne Prozesse wie den rpciod-Thread oder die Core Dump-Erstellung, die BKL nutzen.

Etwa 10% aller lock_kernel()-Aufrufe stehen in alten, geächteten Soundtreibern und -Bestandteilen des Kernels, wohingegen ALSA (Advanced Linux Sound Architecture) bis auf eine Ausnahme keine BKL-Aufrufe nutzt.[5]

Problematik

Die Problematik des BKL ist die äußerst mangelhafte Skalierbarkeit – bei Kernel 2.0 und einem System mit 2 Prozessoren sind deutliche Leistungseinbußen zu spüren, und das Laufen auf noch mehr Prozessoren ist problematisch. Aus diesem Grund wurde der BKL in Locks für kleinere Bereiche umgewandelt, siehe Geschichte.

Weblinks

Einzelnachweise

  1. Neuerungen von Linux 2.6.37 - heise.de
  2. Kernel-Log 2.6.37 Architektur/Infrastruktur
  3. Post von Linux Torvalds, dass der BKL-freie UDF-Treiber zu spät für 2.6.37 kommt
  4. BKL: That's all, folks
  5. Post über den BKL

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

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

  • Big Kernel Lock — Pour les articles homonymes, voir Verrou (homonymie). Le verrou global du noyau, en anglais Big Kernel Lock ou Giant Lock (littéralement le « verrou géant du noyau »), est un mécanisme qui permet de suspendre toutes les opérations du… …   Wikipédia en Français

  • Giant lock — In operating systems, giant lock, which is also known as big lock or kernel lock, is a lock which may be used to implement a concurrency control in the kernel, which is needed for SMP support.It is an approach of single, global lock which is held …   Wikipedia

  • Verrou global du noyau — Big Kernel Lock Pour les articles homonymes, voir Verrou (homonymie). Le verrou global du noyau, en anglais Big Kernel Lock ou Giant Lock (littéralement le « verrou géant du noyau »), est un mécanisme qui permet de suspendre toutes les… …   Wikipédia en Français

  • Verrou géant du noyau — Big Kernel Lock Pour les articles homonymes, voir Verrou (homonymie). Le verrou global du noyau, en anglais Big Kernel Lock ou Giant Lock (littéralement le « verrou géant du noyau »), est un mécanisme qui permet de suspendre toutes les… …   Wikipédia en Français

  • BKL — Big Kernel Lock (Computing » Security) * Burke Lakefront Airport, Cleveland, Ohio USA (Regional » Airport Codes) …   Abbreviations dictionary

  • Ingo Molnár — est un kernel hacker Hongrois connu pour ses nombreuses contributions au noyau linux, et travaillant pour la société Red Hat. Sommaire …   Wikipédia en Français

  • Noyau Linux — Pour les articles homonymes, voir Noyau et Linux (homonymie). Linux …   Wikipédia en Français

  • ReiserFS — Infobox Filesystem name = ReiserFS full name = ReiserFS developer = Namesys introduction os = Linux 2.4.1 introduction date = 2001 OS = Linux partition id = Apple UNIX SVR2 (Apple Partition Map) 0x83 (MBR) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7… …   Wikipedia

  • Noyau de système d'exploitation — Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation, ou simplement noyau, ou kernel (de l anglais[1]), est la partie fondamentale de certains systèmes d’exploitation. Il gère les ressources de l’ordinateur et permet aux… …   Wikipédia en Français

  • Noyau Windows NT — Le noyau de Windows NT est le composant Microsoft qui assure l accès sécurisé des différentes tâches de Windows à la couche du matériel (Hardware abstraction layer). Sur un système 32 bits classique monoprocesseur, le noyau s appelle… …   Wikipédia en Français

Share the article and excerpts

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