Anatomie du kernel Linux

Tim Jones

Cet article a pour but de vous présenter l'architecture globale du kernel Linux.

- Titre : Anatomie du kernel Linux

- Auteur : Tim Jones

- Parution : 22 juin 2008

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008 Tim Jones. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Une courte histoire de Linux

- III. Introduction au Kernel

I - Introduction

Le noyau linux est à la base d'une large et complexe système d'exploitation et tandis qu'il est énorme, il est bien organisé in terme de de sous-systèmes et de LAYER. Dans cette article, vous allez explorer le structure générale du kernel linux et connaître les principaux sous-systèmes et interfaces du noyau. Dans la mesure du possible vous serez renvoyés vers d'autres articles d'IBM pour approfondir.

Étant donné que le but de cet article est de vous initier au noyau et d'explorer son architecture ainsi que ses principaux composants , nous commencerons par faire un petit tours de l'histoire du noyau, ensuite nous allons regarder l'architecture du noyau de façon globale pour finalement examiner les principaux sous-système. le noyau dépassant les 6 millions de ligne de code, cette introduction ne se veut pas exhaustive. Utilisez les liens présent à la fin de l'article pour allez plus loin.

II - Une courte histoire de Linux

Tandis que linux peut être considéré comme le système d'exploitation open source le plus populaire, son histoire est actuellement un peu courte si on considère la durée de vie des autres systèmes d'exploitation. Dans les premier temps de l'informatique, les développeurs codaient directement sur le matériel en langage binaire. L'absence d'un système d'exploitation impliquait que seulement une application (et un utilisateur) pouvait utiliser la machine en même temps. Les premiers systèmes d'exploitations furent développés dans les années 1950 pour que le développement devienne plus simple. Par exemple, il s'agit de GMOS, le système d'exploitation de General Motors et du FORTRAN Monitor System (FMS) développé par aviation nord américaine pour l'IBM 709.

Dans les années 1960, le Massachusetts Institute of Technology (MIT) et HOST de sociétés ont développé un système d'exploitation expérimental nommé MULTICS (Multiplexed Information and Computing Service) pour le GE-645. Un des sociétés développant le système d'exploitation, AT and T , quitta le projet pour développer son propre système nommé Unics. Along with this operating system was the C language, for which C was developed and then rewritten to make operating system development portable. 20 ans plus tard, Andrew Tanenbaum créa une micro-noyau très semblable à Unix , qui appela MINIX (pour Minimal UNIX) et qu'il fit tourner sur son ordinateur personnel. Ce système open source inspira Linus Torvalds dans le début du développement de linux au début des années 1990. Linux passa rapidement d'un projet maintenu par une seule personne à un projet mondial entraînant des milliers de développeurs. Une des plus importantes décisions pour linux à été l'adoption de la GNU General Public License (GPL) . Sous la GPL , le noyau linux est protégé d'une utilisation commerciale and it also benefited from the user-space development of the GNU project (of Richard Stallman, whose source dwarfs that of the Linux kernel). This allowed useful applications such as the GNU Compiler Collection (GCC) and various shell support.

Linux or GNU/Linux? Vous avez probablement remarqué que des fois on se réfère à linux en tant que système d'exploitation sous le nom de "Linux" et d'autres fois c'est sous le nom de "GNU/Linux". La raison derrière ceci est que Linux est le noyau du système d'exploitation. La grande partie des applications qui font que le système est utilisable sont des logiciels GNU. Par exemple, le système de fenêtrage, les compilateurs, les éditeurs, les utilitaires et d'autres applications qui existe en dehors du noyau sont des logiciels GNU. C'est pour cette raison que beaucoup de personnes le nom "GNU/linux" plus approprié pour le système d'exploitation tandis que "Linux" est approprié si on se réfère juste au kernel.

III - Introduction au Kernel

Maintenant regardons l'architecture du système d'exploitation GNU/linux de façon très générale. On peut l'observer à 2 niveaux différents, comme le montre la figure 2.

En haut, il ya l'utilisateur , ou l'espace utilisateur. C'est ici que sont exécuté les applications utilisateurs. En dessous l'espace utilisateur, il a y l'espace noyau . C'est ici le noyau linux existe. Il y a aussi la bibliothèque C GNU (ou glibc). Elle fournit l'interface du système d'appel qui connecte au noyau et fournit aussi le moyen de transition entre les applications utilisateurs et le noyau. ceci est important car le noyau et les applications utilisateur occupent différents espaces mémoire protégés. Et tandis que espace utilisateur occupe son propre espace virtuel, le noyau occupe une seule adresse mémoire. Pour plus d'information regardez les liens dans la section ressource.

le noyau peut lui même être divisé en 3 grands niveaux. En 1er lieu, il y a l'interface d'appel système, qui implémente les fonctions basiques comme read ou write. En dessous l'interface d'appel, il y a le code du noyau qui est précisément comme étant le code le code invariable d'une architecture à l'autre. Ce code est commun à toutes les architectures de processeurs.