74 lines
No EOL
3.5 KiB
Markdown
74 lines
No EOL
3.5 KiB
Markdown
# 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. |