Qu'y a-t-il dans un système d'exploitation autre que le noyau

43

Si je comprends bien, le noyau effectue toute l’interaction avec le matériel et gère la mémoire, les périphériques d’E / S, etc. Le noyau fait donc tout, et pourtant il n’est qu’une partie du système d’exploitation. Alors quoi d’autre dans un OS? Juste les applications qui l'accompagnent? Par exemple, qu'est-ce que Ubuntu a d'autre qu'un noyau? Le bureau Gnome et quelques autres applications?

AnkurVj
la source

Réponses:

54

La coquille, bien sûr.

La métaphore originale qui nous a donné le mot "noyau" pour cela en premier lieu est trop souvent oubliée. La métaphore est qu'un système d'exploitation est une graine ou une noix. Le "noyau" de la graine est le cœur du système d'exploitation. Il fournit des services de système d'exploitation aux programmes d'application, lesquels sont entourés du "shell" de la graine, ce que les utilisateurs voient de l'extérieur.

Certaines personnes veulent lier "noyau" (et même "shell") pour être plus précis que cela. Mais en réalité, il y a beaucoup de variation entre les systèmes d'exploitation. Ce n’est pas le moindre de ces variations qui constitue un "shell" (qui peut aller de l’ shinterpréteur de commandes console de Netetware à Workplace Shell d’OS / 2 et à l’explorateur de Windows NT), mais il existe également de nombreux écarts entre les systèmes ce qui fait et ne fait pas partie d’un "noyau" (qui peut inclure ou non des E / S de disque, par exemple). Il vaut mieux se rappeler que ces termes sont des métaphores .

Il existe d'autres terminologies. Dans la terminologie mainframe IBM, le "noyau" de la métaphore seed / nut est appelé programme de contrôle . Les autres noms incluent le superviseur , le moniteur , le noyau et le dirigeant . Le noyau est une autre métaphore biologique assez évidente. Il est intéressant qu’il en soit de même d’un autre nom. Harvey M. Deitel, dans ses systèmes d’exploitation , appelle le programme de contrôle le noyau et dit:

Le noyau représente normalement une petite partie du code de ce que l’on pense communément de tout le système d’exploitation [...]

Le mot "noyau" vient du latin latin noyau et signifie le noyau d'une noix (cf le latin nux , qui signifie "noix"). Ainsi, même appeler le programme de contrôle "le noyau" permet en fait de faire la même analogie de système d’exploitation. C'est une analogie qui est utilisée pour plus que des systèmes d'exploitation. Si vous connaissez la chimie, par exemple, vous saurez qu'un noyau atomique est entouré d'électrons dans des couches .

Ce que la personne pseudonyme new123456écrit ci-dessous illustre les erreurs résultant de l’oubli des origines de ces métaphores dans la mesure où l’on confond la partie pour l’ensemble et le noyau pour l’ensemble du système d’exploitation. Etre un programme "utilisateur" ne rend pas le shell moins extérieur au système d’exploitation, ni moins ce qui entoure le noyau. De plus, loin d’être une idée uniquement sous DOS qui ne s’applique pas à Unix au-delà de la version 7, cette idée est à la fois répandue et courante dans le monde Unix.

(Il est ironique de new123456le prendre pour un DOSisme. La métaphore noyau / shell était assez étrangère à DOS à ses débuts, privilégiant ainsi le processeur de commande et similaire, de CP / M. À l’instar de CP / M, MS-DOS était divisé Le système d'exploitation de disque de base (BDOS), le système d'entrées-sorties de base (BIOS - pas le micrologiciel du système, notez), le processeur de commande et les utilitaires de maintenance. Le code a en fait été divisé en fichiers de cette manière. exemple, en fait, de la manière dont la métaphore noyau / shell ne couvre pas ou ne correspond pas totalement aux divisions réelles dans de nombreux systèmes d’exploitation).

new123456C'est oublier ce que Deitel a écrit sur le noyau faisant partie du système d'exploitation global. Un système d'exploitation est à la fois noyau et shell. C'est, après tout, la métaphore. Deitel n'est pas seul non plus. De nombreux livres Unix expliquent la métaphore Unix comme noix, à partir des années 1980. Je recommande Urban's et Tiemann Teach Yourself FreeBSD en 24 heures (SAMS, ISBN 9780672324246), pour la simple raison que sur la page 54, il y a un diagramme illustrant la métaphore du système d’exploitation: peu de livres pour le faire.

Le nom "noyau" est probablement l'ancien nom; certainement antérieure à Unix, qui privilégie la terminologie noyau / shell qui est aujourd’hui - probablement en grande partie grâce à Unix - prédominante. Voici ce qui se trouve dans l'ouvrage de 1974 de Alan C. Shaw intitulé La conception logique des systèmes d'exploitation (Prentice-Hall, ISBN 9780135401125), par exemple:

La partie du système qui réside en permanence dans le stockage principal a toujours été appelée le noyau . Le noyau consiste généralement en un ensemble minimal de primitives et de processus de gestion des processus, des ressources et des entrées-sorties.
Shaw a aussi un diagramme. ☺

JdeBP
la source
7
Je pense que c’est une réponse brillante, tout simplement parce que cela m’a fait penser à la relation entre les métaphores "shell" et "kernel". Je connaissais les deux, je ne les ai jamais connectés. Je connaissais la réponse à la question mais j'ai quand même réussi à apprendre quelque chose de cette réponse. D'où le vote positif. Merci!
Andrew J. Brehm
J'hésiterais à le dire, car le shell UNIX a été extrait du noyau lui-même depuis la version 7 et a depuis été un programme utilisateur dans tous les sens du terme. Cependant, ce que vous dites est vrai d’un DOS (choix de conception particulièrement horrible).
new123456
Bien joué, monsieur. Toutefois, veuillez laisser un @emplacement lorsque vous mentionnez mon nom d'utilisateur afin qu'il soit publié dans la file d'attente des réponses.
new123456
On a voté pour être une réponse aussi complète avec beaucoup d’histoire intéressante (je n’étais pas au courant que le noyau était un terme informatique - ou son étymologie latine). Cependant, je pense qu’il s’agirait mieux d’une réponse autonome s’il ne faisait pas explicitement référence à la réponse d’un autre utilisateur (maintenant supprimée).
Anthony G - justice pour Monica
45

Les autres parties du système d'exploitation incluent les pilotes qui interagissent avec le noyau. Plusieurs couches de programmes d'assistance traitent de l'interface utilisateur, de la mise en réseau et d'autres parties essentielles du système d'exploitation situées entre le noyau et l'application réelle.

Pour donner un exemple, j'ai montré la structure d'OS X , comme vous pouvez le voir sur le noyau (bleu clair), plusieurs couches de fonctionnalités "essentielles", d'outils système, de services et d'API (interface de programmation d'application) avant de Même accéder à l'interface graphique qui est ce que vous travaillez généralement dans les applications elles-mêmes.

entrez la description de l'image ici

La plupart des systèmes d'exploitation ont une structure similaire, mais il existe une grande marge de manœuvre pour différencier le nombre de parties du noyau. Voir l'article de Wikipedia sur Microkernels pour une comparaison.

EDIT - Pour répondre à votre commentaire (mon commentaire est un peu long)

Vous pourriez ne démarrer qu’un noyau Linux, mais vous ne pourriez pas vraiment en faire beaucoup, c’est toutes ces applications auxiliaires qui fournissent toute l’interface que vous voyez et utilisez.

Une fois que le noyau est démarré (et initialise le matériel) , il va tenter de remettre vers d' autres parties du système d' exploitation GNU / Linux qui fournissent la fonctionnalité pour le démarrage des services (tels que UDEV qui Remplit /devavec des interfaces de périphériques premières pour les programmes à des choses comme l'utilisation des disques durs et des ports série, etc.) et des programmes pour configurer le réseau ( dhcpcd ) et des API telles que X.org pour que les applications puissent afficher des fenêtres et des icônes via un gestionnaire de fenêtres tel que GNOME ou KDE .

Mais oui, vous pourriez simplement démarrer le noyau lui-même, il resterait là avec un "J'ai démarré, maintenant quoi?" rapide.

Mokubai
la source
est-ce que je peux démarrer juste un noyau et aucune des choses additionnelles que le système d'exploitation a habituellement?
AnkurVj
En théorie, j'imagine, mais cela ne ferait rien sans d'autres programmes. Il existe de petits systèmes d'exploitation que les utilisateurs ont créés pour s'amuser et qui ne sont qu'un noyau, un shell et peut-être un compilateur ou un assembleur (je pense que Linux a démarré de cette façon, en fait).
user55325
@AnkurVj J'ai ajouté à ma réponse.
Mokubai
3
Je ne pense pas que vous puissiez démarrer uniquement le noyau Linux. Le noyau atteint un point où il appelle init. Le système passe alors du mode noyau au mode utilisateur. Si init n'est pas disponible (ou un faux init, comme bash), le noyau panique et se bloque. Il faut donc qu’un processus d’initialisation soit en cours d’exécution pour éviter la panique; à ce stade, le noyau ne s’exécute pas uniquement.
Joe Internet
1
Vous pouvez démarrer un noyau nu, mais sans le reste du système d'exploitation, l'utilisateur n'aurait aucune interaction avec celui-ci.
Keltari