Il y a deux grandes familles :
La deuxième famille ne vous parle pas, mais le noyau linux est issue de cette famille et linux est le noyau d’Android ou Ubuntu par exemple.
Le système d'exploitation est un programme, c'est généralement le deuxième programme lancés (après le programme de boot). Il reste en mémoire jusqu'au moment de l’arrêt de l'ordinateur.
On peut déjà partager le système d'exploitation en deux :
Le noyau du système d'exploitation doit offrir :
Voyons les points un peu plus en détails.
Reprenons le fonctionnement de l'ordinateur via l'architecture de von Neumann, si une instruction demande à récupérer une donnée (sur un disque dur ou pire une entrée de l'utilisateur) alors il doit attendre de la récupérer et les autres instructions sont bloquées, et le processeur perd un énorme partie du temps de calcul (rappelons que 1ms représente 300 000 tics machines pour un ordinateur à 3Ghz).
Le noyau du système d’exploitation est chargée de faire fonctionner un autre programme en attendant, il doit donc sauvegarder la mémoire, le compteur ordinal, l'accumulateur et les autres registres. Une fois que la donnée est acquise il peut relancer le programme principal.Toujours dans l'architecture de von Neumann, nous savons qu'a un instant donné, un seul programme peut s'exécuter (potentiellement 4 si l'ordinateur à 4 cœurs) alors comment notre ordinateur peut jouer de la musique, passer une vidéo, compresser un fichier en même temps notre travail sur un traitement de texte ?
Pourquoi arrive t'on à fermer le programme suivant :
Car le noyau du système d'exploitation va répartir le temps processeur entre les différents processus (= programme en cours d'exécution pour faire simple) en mémoire.
Comme ça va très vite, on a l'impression que tous est fait en même temps.
Un disque dur SSD est différent d'un disque dur plateau, l'U.S.B. évolue, les imprimantes des différentes marques (et même entre les marques entre wifi et filière) ont des fonctionnement différents, les vieux écrans avait une sortie VGA et les nouveaux ont l'HDMI. Les technologie évoluent mais dans les programmes ont n'en tient pas compte car la tache revient au noyau du système d'exploitation. Si on veut par exemple faire un print en python alors l'interpréteur va passer par une A.P.I. (Application programming interface) pour demander au système de le faire.
Mais comment fait le système d'exploitation pour arriver à communiquer avec les périphériques ? Il le fait à l'aide de d'un programme appelé pilote (ou driver en anglais) qu'on a installé ou préinstallé.
Pendant la séance sur vonNeumann nous avons avions l'impression que nous avons le contrôle total sur la mémoire, en réalité c'est faux et le système d'exploitation déplace le contenu de la mémoire, mais le programmeur n'a pas besoin de s'en préoccuper, le système d'exploitation doit faire comme si le programme reste statique.
Pour le lancement du programme, le système d'exploitation va charger le programme du disque dur et le placer en mémoire pour en faire un processus.
Un processus ne peut pas accéder aux ressources d'un autre, un processus ne peut pas accéder à un fichier non autorisé,... le noyau lui le peut. C'est le seul programme à être en mode privilégié.
Le noyau organise nos données, programme... sous forme de fichier contenu dans des répertoires qui eux aussi sont dans des répertoires. On a l'image de tiroir mais Ceci est une abstraction, un répertoire ne contient pas d'autres fichiers mais l’identifiant d'autres fichiers.
Il existe de nombreuses façons de gérer les fichiers (FAT,NTFS,posix à base inode) voici une version naïve et simplifiée.
De nos jour, les systèmes d'application offrent des interfaces graphiques permettant de visualiser ses fichiers à l'aide d’icône, de les déplacer à l'aide de la souris, de lancer une application en cliquant dessus...., c'est très jolie et cela permet de démocratiser les ordinateurs mais les interfaces graphiques ne sont venu qu'assez tard (Par Apple fin des années 1970 et les premières version de Windows de 1985), avant on devait taper des instructions et lire les résultats sur l'écran.
Par exemple, sous Windows10 on a une visualisation suivante :
Alors qu'avec les lignes de commande, en utilisant le powershell Windows, on a le résultat plus "sobre" suivant :
Les lignes de commande sont largement utilisées par les professionnels en effet elles offrent de nombreux avantages :
| Linux | Windows | Description |
|---|---|---|
| h | help | Liste des commandes de bases sur windows /? à la fin d'une instruction affiche l'aide. |
| ls | dir | Lire le contenu du répertoire en cours. |
| pwd | cd | Chemin en cours |
| ifconfig | ipconfig | Information réseau. |
| ps | tasklist | Affiche les processus. |