mercredi 2 avril 2008

Noyau de système d'exploitation

Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais), est la partie fondamentale de certains systèmes d’exploitation. Elle gère les ressources de l’ordinateur et permet aux différents composants — matériels et logiciels — de communiquer entre eux.

En tant que partie du système d’exploitation, le noyau fournit des mécanismes d’abstraction du matériel, notamment de la mémoire, du (ou des) processeur(s), et des échanges d’informations entre logiciels et périphériques matériels. Le noyau autorise aussi diverses abstractions logicielles et facilite la communication entre les processus.

Le noyau d’un système d’exploitation est lui-même un logiciel, mais ne peut cependant utiliser tous les mécanismes d’abstraction qu’il fournit aux autres logiciels[1]. Son rôle central impose par ailleurs des performances élevées. Cela fait du noyau la partie la plus critique d’un système d’exploitation et rend sa conception et sa programmation particulièrement délicates. Plusieurs techniques sont mises en œuvre pour simplifier la programmation des noyaux tout en garantissant de bonnes performances.

Généralités

En informatique, le noyau d’un système d’exploitation est le logiciel qui assure :

  • la communication entre les logiciels et le matériel ;
  • la gestion des divers logiciels (tâches) d’une machine (lancement des programmes, ordonnancement,…) ;
  • la gestion du matériel (mémoire, processeur, périphérique, stockage,…).

La majorité des systèmes d’exploitation sont construits autour de la notion de noyau. L’existence d’un noyau, c’est-à-dire d’un programme unique responsable de la communication entre le matériel et le logiciel, résulte de compromis complexes portant sur des questions de performance, de sécurité et d’architecture des processeurs.

L’existence d’un noyau présuppose[2] une partition virtuelle de la mémoire vive physique en deux régions disjointes, l’une étant réservée au noyau (l’espace noyau) et l’autre aux applications (l’espace utilisateur). Cette division fondamentale de l’espace mémoire en un espace noyau et un espace utilisateur contribue beaucoup à donner la forme et le contenu actuels des systèmes généralistes (Linux, Windows, Mac OS X, etc.). Le noyau a de grands pouvoirs sur l’utilisation des ressources matérielles, en particulier de la mémoire. Elle structure également le travail des développeurs : le développement de code dans l’espace noyau est a priori plus délicat que dans l’espace utilisateur car la mémoire n’est pas protégée.

Le noyau offre ses fonctionnalités (l’accès aux ressources qu’il gère) au travers des appels système. Il transmet ou interprète les informations du matériel via des interruptions. C’est ce que l’on appelle les entrées et sorties.

Diverses abstractions de la notion d’application sont fournies par le noyau aux développeurs. La plus courante est celle de processus (ou tâche). Le noyau du système d’exploitation n’est en lui-même pas une tâche, mais un ensemble de routines pouvant être appelées par les différents processus pour effectuer des opérations requérant un certain niveau de privilèges. Les flots d’exécution dans le noyau sont des continuations des flots d’exécution des processus utilisateurs bloqués lorsqu’ils effectuent des appels systèmes. En général, un processus bloqué ne consomme pas de temps processeur, il est réveillé par le processus système lorsque celui-ci se termine.

Un processeur est capable d’exécuter un seul processus, un multiprocesseur est capable de gérer autant de processus qu’il a de processeurs. Pour pallier cet inconvénient majeur, les noyaux multitâches permettent l’exécution de plusieurs processus sur un processeur, en partageant le temps du processeur entre les processus.

Lorsque plusieurs tâches doivent être exécutées de manière parallèle, un noyau multitâche s’appuie sur les notions de :

Les entrées et les sorties font l’objet d’un traitement spécifique par l’ordonnanceur.

Systèmes à noyaux restreints

Il existe de nombreux noyaux aux fonctionnalités restreintes tels que les micro-noyaux, les systèmes sans noyau (MS-DOS, CP/M) ou les exo-noyaux.

Ces systèmes sont généralement adaptés à des applications très ciblées mais posent des problèmes variés (de sécurité avec MS-DOS, de performances avec HURD ou QNX). La plupart d’entre eux sont actuellement inadaptés pour une utilisation généraliste, dans des serveurs ou ordinateurs personnels

Aucun commentaire: