- 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 noyau d'un système d'exploitation de manière à contrôler les accès concurrents sur les machines multi-processeurs à mémoire partagée (SMP).
Ce système consiste à poser un verrou sur l'accès à l'espace noyau dès qu'une tâche y entre pour éviter tout risque de concurrence. Une fois la tâche achevée, le verrou est relâché.
Ce mécanisme a l'avantage d'être simple à implémenter puisqu'il n'implique pas la modification d'un grand nombre de parties du code du noyau. Il présente cependant l'inconvénient majeur de ne permettre qu'à une seule tâche l'accès aux ressources du noyau à un instant donné. Une partie de l'intérêt des systèmes multi-processeurs est alors perdue : lorsqu'une tâche exécute du code noyau, toutes les autres tâches pouvant potentiellement s'exécuter en parallèle, mais tentant d'accéder au noyau, se retrouvent bloquées.
Les techniques de verrouillage fin (fine-grained locking) sont des alternatives plus efficaces mais bien plus complexes à mettre en œuvre.
Noyau Linux
Dans le noyau Linux, la décision a été prise de le faire progressivement disparaître au profit de techniques de verrouillage fin[1],[2].
En attendant que ce retrait soit totalement réalisé, les patchs PREEMPT_RT de la branche -rt d'Ingo Molnar permettent de réduire l'impact du Big Kernel Lock en le rendant préemptible.
Depuis la version 2.6.37, le code du Big Kernel Lock a été supprimé du cœur du noyau et il devient possible de le compiler sans BKL[3].
Le Big Kernel Lock a définitivement disparu à partir de la version 2.6.39, toutes les parties du code y faisant allusion ayant été supprimés.
Notes
- (fr)La fin du verrou global dans le noyau Linux ?, 19 mai 2008
- (en)Removing the Big Kernel Lock, 15 mai 2008
- Sortie de la version 2.6.37 du noyau Linux », Linuxfr, 5 janvier 2011 Patrick Guignot, «
Voir aussi
Catégories :- Noyau informatique
- Noyau Linux
Wikimedia Foundation. 2010.