Linux-kernel version-2.6 changements-internes-2.6
From UnixWiki
Le livre "Linux kernel development" de Robert Love parle beaucoup des nouveautés introduites dans le noyau 2.6. On peut ainsi constater que les principales nouveautés concernent des améliorations sur les structures internes.
Les nouveautés du noyau 2.6 étaient assez nombreuses, et certains proposaient même de passer à un numéro 3.0 pour marquer ces évolutions. Cependant, les changements directement visibles pour les utilisateurs ne sont pas si nombreux. Ce paradoxe est expliqué dans le livre de Robert Love.
Il explique par exemple au début du noyau le fonctionnement du nouveau scheduler, c'est à dire le programme qui est chargé de distribuer l'accès des processus au processeur. Il attribue des tranches de temps (timeslice) en fonction du type de processus et de sa priorité. Il doit répartir la puissance de façon à ce que le système soit suffisement réactif, et que les processus prioritaires (valeur nice plus faible) aient plus de temps. La nouveauté de ce scheduler est qu'il utilise un algorithme en O(1), ce qui veut dire qu'il mettra à peu près le même temps à trouver le processus à sélectionner, quelque soit le nombre de processus dans le système. C'est par exemple préférable à un algorithme en O(n) qui mettrait un temps à s'exécuter proportionnel au nombre de processus. Etant donné que cet algorithme utilise lui-même le processeur, il ne faudrait pas qu'il le monopolise inutilement.
Un autre changement important concerne le vérouillage des données (lock). Une difficulté dans le noyau est que plusieurs parties de code du noyau peuvent s'exécuter au même moment, où à des instants très proches, même sur un système UP (uni-processor), notamment à cause des interruptions. Afin de garantir l'intégrité des données, le code est obligé de vérouiller les variables avant d'y accéder, afin de garantir qu'une autre fonction ne puisse pas les altérer si les deux accès très rapprochés. Un des mauvais effets du vérouillage est que ces protections mettent en attente les processus concurrents du système. Sur un système SMP (multi-processeurs), les verrous empêchent aux processus d'utiliser pleinement la puissance de tous les processeurs, et conduisent à une perte de performances. Un des changements du noyau 2.6 a consisté à affiner l'utilisation des verrous, afin de réduire au maximum leur protée. Par exemple, il est préférable de ne protéger qu'une variable d'une structure, au lieu de protéger la structure de données dans son intégralité. L'affinage du vérouillage conduit à une libération des processus, et à une meilleure utilisation des processeurs d'un système SMP.
Beaucoup d'évolutions ont donc consisté à mettre en place des nouvelles structures et méthodes de gestion des ressources. Même si elles ne sont pas directement visibles, ces modifications améliorent la réactivité et l'évolutivité du système.
