Quoi de neuf dans un système d'exploitation autre que le noyau

Comme je l'ai compris, le noyau effectue toutes les interactions avec le matériel, et gère la mémoire, les périphériques d'E / S, etc. Donc, le noyau fait tout, mais c'est juste une partie du système d'exploitation. Alors, qu'est-ce qu'il y a d'autre dans un système d'exploitation? Juste les applications qui sont livrées avec elle? Par exemple, qu'est-ce que Ubuntu possède autre qu'un noyau? Le Gnome Desktop et quelques autres applications?

La coque, bien sûr.

La métaphore originale qui nous a permis d'obtenir le mot «noyau» en premier lieu est trop souvent oubliée. La métaphore est qu'un système d'exploitation est une graine ou un écrou. Le «noyau» de la semence est au centre du système d'exploitation, fournissant des services de système d'exploitation à des programmes d'applications, entourés par la «coquille» de la graine, ce que les utilisateurs voient de l'extérieur.

Certaines personnes veulent lier "kernel" (et, en fait, "shell") pour être plus précis que cela. Mais en vérité, il existe beaucoup de variations dans les systèmes d'exploitation. Pas le moindre de ces variations est ce qui constitue un "shell" (qui peut varier de Solaris 'par l'interpréteur de commande de console de Netware vers Workplace Shell de OS / 2 et Explorateur de Windows NT), mais il y a aussi beaucoup de variance d'un système d'exploitation à l'autre Dans ce qui est, et n'est pas, une partie d'un "noyau" (qui peut ou non inclure E / S de disque, par exemple). Il est préférable de se rappeler que ces termes sont des métaphores .

Il existe d'autres terminologies. Dans la terminologie du mainframe IBM, le «noyau» dans la métaphore des graines / noix est appelé programme de contrôle . D'autres noms incluent le superviseur , le moniteur , le noyau et l' exécutif . Core est une autre métaphore biologique assez évidente. Il est intéressant de le faire aussi un autre nom. Harvey M. Deitel, dans ses systèmes d'exploitation , appelle le programme de contrôle du noyau et dit

Le noyau représente normalement une petite partie du code de ce qui est couramment considéré comme l'ensemble du système d'exploitation […]

Le mot «noyau» provient du noyau latin et signifie le noyau d'un noix (cf le nux latin, qui signifie «noix»). Donc même appeler le programme de contrôle «le noyau» fait en fait cette même analogie du système d'exploitation-comme-a-écrou. 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 en coquilles .

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'une des erreurs de la partie pour l'ensemble et les erreurs du noyau pour l'ensemble du système d'exploitation. Le fait d'être un programme «userland» ne réduit pas l'enveloppe à l'extérieur du système d'exploitation, et ne fait pas moins de ce qui renferme le noyau. De plus, loin d'être une idée unique de DOS qui ne s'applique pas à Unix au-delà de la version 7, cette idée est à la fois répandue et actuelle dans le monde de Unix.

(Il est ironique que new123456 empêche pour un DOSIS. La métaphore du noyau / coquille était assez étrangère à DOS dans ses premières années, ce qui favorise le processeur de commande et similaire, de CP / M. Comme CP / M avant, MS-DOS était Divisé en système d'exploitation de disque de base (BDOS), le système d'entrée-sortie de base (BIOS – pas le microprogramme du système, note), le processeur de commande et les utilitaires de ménage . Le code a été partagé dans les fichiers de cette manière. Un autre exemple, en fait, de la façon dont la métaphore du noyau / coquille ne couvre pas vraiment ou ne correspond pas complètement aux divisions réelles dans de nombreux systèmes d'exploitation.)

new123456 oublie 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. Il existe des rameaux de livres Unix expliquant la métaphore Unix-as-a-nut, à 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, à la page 54, il a un diagramme illustrant la métaphore du système d'exploitation en tant que semences et, de façon surprenante, est l'un des Quelques livres pour le faire.

Le nom "noyau" est probablement le nom ancien; Certainement prédominant Unix, qui favorise la terminologie du noyau / coquille qui aujourd'hui – probablement en grande partie grâce à Unix – est la plus répandue. Voici ce qu'il y a dans le livre 1974 d'Alan C. Shaw 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 consistera généralement en un ensemble minimal de primitives et de processus pour la gestion des processus, des ressources et des entrées-sorties.

Shaw a également un diagramme.

D'autres parties du système d'exploitation comprennent les pilotes qui interagissent avec le noyau, il existe plusieurs couches de programmes d'assistance qui traitent de l'interface utilisateur, du réseau et d'autres éléments essentiels du système d'exploitation qui se trouvent entre le noyau et l'application réelle.

Pour donner un exemple, j'ai montré que la structure de OS X , comme vous pouvez le voir au dessus du Kernel (bleu clair) réside dans plusieurs couches de fonctionnalité "core", outils système, services et API (Application Programming Interface) avant vous Même à l'interface graphique, c'est à quoi 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 large marge de manœuvre en ce qui concerne exactement quelle est en fait une partie du noyau. Voir l'article Wikipedia sur Microkernels pour une comparaison.

EDIT – Pour répondre à votre commentaire (mon commentaire a été un peu long)

Vous pouvez démarrer uniquement un noyau linux, mais vous ne pourrez pas vraiment réaliser beaucoup, c'est toutes ces applications qui fournissent toutes les interfaces que vous voyez et utilisez.

Une fois que le noyau est démarré (et initialisé le matériel), il tentera de le distribuer à d'autres parties du système d'exploitation GNU / Linux qui fournissent la fonctionnalité pour les services de démarrage (comme UDEV qui remplit /dev avec des interfaces de périphériques brutes pour les programmes à utiliser Des choses comme les disques durs et les ports série, etc.) et des programmes pour configurer le réseau ( dhcpcd ) et les API telles que X.org pour que les applications puissent afficher les fenêtres et les icônes grâce à un gestionnaire de fenêtres tel que GNOME ou KDE .

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