Md-IUT-Cours/com/exposes/kernel.md

3.5 KiB

Le kernel dans un OS

Différents OS : OS X, Windows, Linux

Composantes communes

  • Processeur
  • Mémoire
  • IO
  • Appels système
  • Erreurs

Processeur

Gère l'ordonnancement entre les tâches : qui fait quoi et quand ?

Mémoire

RAM (Random Access Memory) : Permet de stocker des données temporairement. Un programme demande au système de la mémoire, le kernel lui donne une part.

Entrées / Sorties

Tout ce qui est connecté à l'ordinateur. Le kernel doit pouvoir gérer les divers composants.

Appels système (~ interruptions)

L'utilisateur lance un processus. Il demande à l'OS de lire un fichier mais ne peut pas le faire directement. Il fait un appel système et ce dernier gère l'autorisation ou non de la commande.

Erreurs

Dans la continuité des Appels système. Si on essaye d'accéder à une zone mémoire interdite, le kernel refuse la demande et coupe le programme.

Le démarrage

  1. On appuie sur le bouton, le BIOS est le premier programme à être chargé. Il est stocké dans une puce sur la carte mère.
  2. Le BIOS appelle le bootloader (stocké sur le DD), qui lui-même appelle l'image noyau compressée (<1Mo).
  3. L'image système se décompresse elle-même (le début de son code contient sa routine de décompression).
  4. La première chose à être mise en place est la pagination pour gérer la RAM.
  5. On détecte ensuite le CPU pour charger l'ordonanceur.
  6. Chargement des drivers en mémoire puis initialisation matérielles nécessaires
  7. On charge l'OS et on passe la main au premier processus utilisateur qui déclenche en cascade tous les autres.

Différents noyaux

Monolithique

Monolithique pur

Très rapide.
Aujourd'hui obsolète. Très lourd (> 6 millions de lignes de code).

Monolithique modulaire

Toujours très rapide. Sépare les parties moins critiques.
Toujours très lourd.

Micro-noyaux

Plus stable qu'un monolithique, car dans l'espace noyau ne se trouve que ce qui est critique pour l'OS. Le reste est dans l'espace utilisateur.
Plus lent car utilise des messages plus lourds entre processus.
Plus léger et plus facile à entretenir.

Micro-noyaux enrichis (Ubuntu, Windows)

Le reste n'est plus dans l'espace utilisateur mais dans le micro noyau enrichi.

Noyaux hybrides (OS X)

Le meilleur des deux mondes : rapide et stable.
On a rapatrié certains services dans le noyau hybride, les autres sont dans l'espace utilisateur.

Différents types de noyaux : temps réel (OS X) ou non

Ils sont fonctionnellement spécialisés. Très utilisé dans l'électronique embarquée (ABS dans les voitures, navettes spatiales, ...). Ils garantissent qu'un processus critique puisse bénéficier de tout le temps processeur si besoin.

Historique

Années 60

IBM fait des machines pour les entreprises mais on est à chaque fois obligés de rédemarrer l'ordinateur pour charger un nouveau programme.
IBM crée alors le premier environnement d'exploitation et y intègre la gestion des I/O.

Années 70

UNIX voit le jour grâce à l'invention du C : portabilité et abstraction du matériel.

Années 80

Les premiers problèmes de sécurité apparaissent. Les ordinateurs travaillent encore en mode réel à cette époque (pas de pagination, on adresse directement les données dans la RAM).
On invente alors le concept de mémoire virtuelle (MMU : Memory Management Unit).

Années 90

Les processeurs deviennent multitâches.

Années 2000

Les processeurs deviennent multicoeurs : révision de l'ordonanceur, nouvelles contraintes.

Années 2010

Virtualisation des systèmes plus répandue.