www.wikidata.de-de.nina.az
Der Big Kernel Lock kurz BKL war ein Verfahren das mit Linux 2 0 im Jahr 1996 eingefuhrt wurde um die Ausfuhrung von Kernelcode durch mehrere Prozessoren bzw Kerne auf Multiprozessorsystemen zu verwalten Der BKL verhinderte dass mehrere Kernel Sub Prozesse gleichzeitig evtl auf mehreren Prozessoren bzw Prozessorkernen laufen und schutzte damit den Kernel bzw die Hardware vor konkurrierenden Zugriffen auf Ressourcen wie System Dateien auf der Festplatte Inhaltsverzeichnis 1 Geschichte 2 Eigenschaften und Nutzung 3 Nutzung und Vorkommen 4 Problematik 5 Weblinks 6 EinzelnachweiseGeschichte BearbeitenBKL wurde mit Kernel 2 0 1996 eingefuhrt um die Nutzung von Multiprozessorsystemen zu ermoglichen Nachdem Leistungseinbussen s Problematik festgestellt worden waren wurde mit Kernel 2 2 der separate I O Lock fur das Input Output Subsystem eingefuhrt Diese Aufsplittung in kleinere Locks fur Subsysteme wurde bis 2 6 letzte Generation fortgefuhrt was zu sehr kleinen Einzel Locks sogenannten fine grained locks ubersetzt feinkornige Locks fuhrte mit denen nur kleine Bereiche gesperrt werden konnten Neuer Code durfte den BKL auf keinen Fall nutzen er ware dann nicht in den offiziellen Kernel aufgenommen werden jedoch existierten noch lange Zeit eine Reihe von Aufrufen Im Kernel 2 6 37 wurde der BKL weitgehend abgeschafft 1 wobei bestimmte Dateisystemtreiber wie der UDF Treiber den BKL noch benotigten was aber durch Patches in Linux 2 6 38 gelost wurde Im Kernel Kompilierungsvorgang gab es dann eine neue Option mit der ein Kompilat ganz ohne BKL Unterstutzung erstellt werden konnte 2 3 Mit Version 2 6 39 wurde die Unterstutzung fur BKL vollstandig aus dem Kernel entfernt 4 und der nachfolgende Kernel 3 0 getauft 5 Mit diesem Aufraumen verschwand der BKL 2011 endgultig Eigenschaften und Nutzung BearbeitenEs ist fur Nutzer hier im Sinne von Funktionen innerhalb des Kernels des Locks moglich eine blockierende Operation auszufuhren oder zu schlafen wahrend der BKL gehalten wird Der BKL ist ein rekursiver Lock das heisst er kann mehrfach gesperrt werden ohne einen Deadlock auszulosen Um den Lock vollstandig zu losen muss der Lock allerdings genauso oft wieder gelost werden Das Nutzen des BKL ist nur im Prozesskontext erlaubt Im Gegensatz zu anderen Spinlocks ist es nicht erlaubt den BKL im Interrupt Kontext zu nutzen Ausserdem deaktiviert das Sperren lock des BKL die kernel preemption also das Verdrangen von Kernel Threads durch einen Scheduler Auf Einprozessor Maschinen deaktiviert der BKL nur die Preemption ohne ein tatsachliches Locking durchzufuhren 6 Syntax Beispiel lock kernel Kritische Region Hier koennen kritische Aktionen durchgefuehrt werden unlock kernel Nutzung und Vorkommen BearbeitenIm Quelltext von Kernel 2 6 existierten trotz der Ausstiegsstrategie immer noch ungefahr 500 BKL Aufrufe lock kernel Das ruhrt einerseits daher dass in den Tiefen des Kernels noch solche Aufrufe behalten werden beispielsweise fur die Aufrufe reboot oder sysctl Ebenfalls lief der fruhe Bootprozess mit eingeschaltetem BKL Intensiv wurde BKL auch von alteren Dateisystemtreibern genutzt dazu gehoren 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 standen in alten und nicht mehr verwendeten Soundtreibern und Bestandteilen des Kernels wohingegen ALSA Advanced Linux Sound Architecture bis auf eine Ausnahme keine BKL Aufrufe nutzte 7 Problematik BearbeitenDie Problematik des BKL war vor allem die ausserst mangelhafte Skalierbarkeit bei Kernel 2 0 und einem System mit schon zwei Prozessoren waren deutliche Leistungseinbussen zu spuren und das Laufen auf noch mehr Prozessoren ist problematisch Wenn der BKL fur die unterschiedlichsten Daten und Code genutzt wurde konnten andere Codebereiche die eventuell vollig andere Aufgaben erledigten aber den BKL nutzten nicht auf ihre zusammen mit ganz anderen Elementen gesperrten Daten oder Codebereiche zugreifen Aus diesem Grund wurde der BKL in Locks fur kleinere Bereiche umgewandelt siehe Geschichte Eine weitere Problematik war offensichtlich dass es absolut unklar war was eigentlich durch einen bestimmten Lock Aufruf geschutzt wird In neuem Code wird fur einzelne Daten Variablen oder kleine Gruppen davon jeweils ein einzelner Lock genutzt Weblinks BearbeitenLinux Kernel 2 6 37 freigegeben pro linux de The Big Kernel Lock lives on lwn netEinzelnachweise Bearbeiten Neuerungen von Linux 2 6 37 heise de Kernel Log 2 6 37 Architektur Infrastruktur Post von Linux Torvalds dass der BKL freie UDF Treiber zu spat fur 2 6 37 kommt BKL That s all folks 1 2 Vorlage Toter Link git kernel org Seite nicht mehr abrufbar festgestellt im April 2018 Suche in Webarchiven nbsp Info Der Link wurde automatisch als defekt markiert Bitte prufe den Link gemass Anleitung und entferne dann diesen Hinweis Ankundigungsmail von Version 3 0 rc1 Memento des Originals vom 30 November 2016 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot thread gmane org Robert Love Linux Kernel Development A thorough guide to the design and implementation of the Linux kernel Third Edition Addison Wesley Developer s Library 2010 ISBN 978 0 672 32946 3 S 198 199 Post uber den BKL Abgerufen von https de wikipedia org w index php title Big Kernel Lock amp oldid 221742726