il est bien marqué ce que j’ai dit plus haut (en espérant ne pas avoir mal interprété).
Et non, tu as commis une petite erreur.
Les 2^k sont des bytes (de manière simpliste un octet), les k des bits.
Du coup le document a bon.
Concernant ta question sur OS et noyaux, ce ne sont pas des définitions strictes. Suivant le document ou le concepteur, cela va parler de différentes choses.
Un système d’exploitation c’est normalement le noyau + briques de base du système. Les briques de base sont généralement des bibliothèques (genre la bibliothèque standard du langage C), voire un shell (la ligne de commande par exemple) et quelques outils du genre.
Cependant, selon Apple, Microsoft ou Google, cela concerne le produit qui est vendu (à savoir macOS, Windows ou Android) en entier, donc cela inclut l’interface graphique, le navigateur Web par défaut, etc.
Je dirais que du point de vue du développeur, c’est le premier cas qui est le plus couramment admis, le second cas est plutôt employé par le grand public, la presse généraliste et les commerciaux.
Le noyau c’est lui qui va faire l’interface entre le matériel et les autres logiciels. Tu peux voir cela comme une machine virtuelle.
S’il n’y avait pas de noyau, toutes les applications devraient connaître le fonctionnement exacte des périphériques sur l’ordinateur. Ton processeur, la RAM, la carte graphique, les disques durs, les normes USB, Ethernet, IP, etc. Les applications devraient réécrire beaucoup de code en commun pour gérer le matériel, tout en devant éviter les conflits. Le noyau permet d’éviter cela, il offre une abstraction du matériel, en gérant les différentes normes, les différences entre deux marques d’un même produits, etc. Le logiciel n’a qu’à se concentrer sur sa propre fonctionnalité et quand il a besoin du matériel il délègue au noyau la tâche de transformer les informations pour que le matériel et le logiciel dialoguent.
Concernant les appels systèmes, grosso-modo il y a plusieurs moyens de faire un noyau. Typiquement (ne prenant des cas extrêmes), tu as des noyaux où tout le code (pilotes de périphérique + le cœur du noyau) qui forment un binaire unique en mémoire et qui fonctionne dans l’espace noyau du processeur. C’est un noyau dit monolithique. À l’inverse, tu en as qui vont mettre un maximum de code en espace utilisateur, à savoir la plupart des pilotes, les systèmes de fichiers pour ne garder en somme que le strict minimum en espace noyau qu’est souvent la gestion de la mémoire et des processus. Ce sont des noyaux dits micro-noyau.
L’avantage du noyau monolithique c’est qu’il est plus performant. Comme le noyau, et les pilotes, doivent dialoguer beaucoup ensemble, mettre cela en espace utilisateur oblige à recourir à beaucoup d’appels système et à complexifier l’architecture du dit noyau. À l’inverse, un micro-noyau est plus fiable car si un pilote a un soucis, il est aisé de le relancer sans que le fonctionnement de la machine soit perturbée.
Donc ce qui te perturbe, c’est cette histoire là, on mettant plus de code au niveau noyau on réduit le nombre d’appels système.
Dans la réalité, MINIX est un micro-noyau pur, Linux et *BSD ont un noyau monolithique modulaire et macOS tout comme Windows ont un noyau hybride (entre les deux).