Les noyaux ont comme fonctions de base d'assurer le
chargement et l'exécution des processus, de gérer les
entrées/sorties et de proposer une interface entre l'espace noyau et les
programmes de l'espace utilisateur.
À de rares exceptions, les noyaux ne sont pas
limités à leurs fonctionnalités de base. On trouve
généralement dans les noyaux les fonctions des micronoyaux : un
gestionnaire de mémoire et un ordonnanceur, ainsi que des fonctions de
communication interprocessus.
En dehors de fonctions précédemment
listées, de nombreux noyaux fournissent également des fonctions
moins fondamentales telles que :
· la gestion des systèmes de fichiers ;
· plusieurs ordonnanceurs spécialisés
(batch7, temps réel, entrées/sorties, etc.) ;
· des notions de processus étendues telles que les
processus légers ;
· des supports réseaux (TCP/IP, PPP, pare-feu, etc.)
;
· des services réseau (NFS, etc.).
Enfin, la plupart des noyaux fournissent également des
modèles de pilotes et des pilotes pour le matériel.
En dehors des fonctionnalités de base, l'ensemble des
fonctions des points suivants (y compris les pilotes matériels, les
fonctions réseaux et systèmes de fichiers ou les services) n'est
pas nécessairement fourni par un noyau de système d'exploitation.
Ces fonctions du système d'exploitation peuvent être
implantées tant dans l'espace utilisateur que dans le noyau
lui-même. Leur implantation dans le noyau est faite dans l'unique but
d'augmenter les
7 Traitement par lot.
7
performances. En effet, suivant la conception du noyau, la
même fonction appelée depuis l'espace utilisateur ou l'espace
noyau a un coût temporel notoirement différent. Si cet appel de
fonction est fréquent, il peut s'avérer utile d'intégrer
ces fonctions au noyau pour augmenter les performances.
Ces techniques sont utilisées pour pallier des
défauts des noyaux tels que les latences élevées. Autant
que possible, il est préférable d'écrire un logiciel hors
du noyau, dans l'espace utilisateur. En effet, l'écriture en espace
noyau suppose l'absence de mécanismes tels que la protection de la
mémoire. Il est donc plus complexe d'écrire un logiciel
fonctionnant dans l'espace noyau que dans l'espace utilisateur, les bugs et
failles de sécurité sont bien plus dangereux.
[2]