Tutoriel du noyau Linux pour les débutants

Tutoriel du noyau Linux pour les débutants

Informations générales sur les systèmes d'exploitation

Un système d'exploitation, abrégé sous forme d'OS, est un logiciel qui contrôle les composants matériels d'un système, que ce soit un téléphone, un ordinateur portable ou un bureau. Il est en charge de la communication entre le logiciel et le matériel. Windows XP, Windows 8, Linux et Mac OS X sont tous des exemples de systèmes d'exploitation. Le système d'exploitation se compose de:

  • Le chargeur de démarrage: logiciel en charge du processus de démarrage de votre appareil.
  • Le noyau: le cœur du système et gère le processeur, la mémoire et les dispositifs périphériques.
  • Daemons: services de fond.
  • Réseautage: systèmes de communication pour l'envoi et la récupération des données entre les systèmes.
  • Le shell: comprend un processus de commande qui permet la manipulation du périphérique via les commandes entrées dans une interface texte.
  • Serveur graphique: le sous-système qui montre les graphiques de votre écran.
  • Environnement de bureau: c'est avec quoi les utilisateurs interagissent habituellement.
  • Applications: sont des programmes qui effectuent les tâches de l'utilisateur telles que les traitements de texte.

Espace du noyau et espace utilisateur

Espace du noyau: Le noyau se trouve dans un état système élevé, qui comprend un espace mémoire protégé et un accès complet au matériel de l'appareil. Cet état système et cet espace mémoire est tout à fait appelé espace de noyau. Dans l'espace du noyau, l'accès principal au matériel et aux services système est géré et fourni en tant que service au reste du système.

Espace utilisateur: Les applications de l'utilisateur sont effectuées dans l'espace utilisateur, où ils peuvent atteindre un sous-ensemble des ressources disponibles de la machine via les appels du système de noyau. En utilisant les services de base fournis au noyau, une application de niveau utilisateur peut être créée comme un logiciel de productivité de jeu ou de bureau par exemple.

Linux

Linux a gagné en popularité au fil des ans en raison de son open source, basé sur une conception de type UNIX, et porté sur plus de plates-formes par rapport à d'autres systèmes d'exploitation concurrents. Il s'agit d'un système d'exploitation, comme indiqué, qui ressemble à un système d'exploitation UNIX OS - un système d'exploitation multi-utilisateur stable, et qui a été assemblé en tant que logiciel libre et open-source pour le développement et la distribution. Ce qui signifie que toute personne ou entreprise a la permission d'utiliser, d'imiter, d'étudier et de modifier le système d'exploitation Linux d'une manière qu'il désire.

Le noyau Linux

Depuis sa première sortie le 17 septembre 1991, le noyau Linux a défié toutes les chances d'être le composant déterminant de Linux. Il a été publié par Linus Torvalds et utilise le GNU / Linux pour décrire le système d'exploitation. Le système d'exploitation Android basé sur le noyau sur les smartphones a fait de Linux sa concurrence pour être la plus grande base de systèmes d'exploitation installés de tous les systèmes d'exploitation à usage général. L'histoire du noyau Linux peut être trouvée ici.

Un noyau peut être monolithique, microkernel ou hybride (comme l'OS X et Windows 7). Le noyau Linux est un noyau de système d'exploitation monolithique qui ressemble au système Unix. La ligne de systèmes d'exploitation Linux communément appelée les distributions Linux est basée sur ce noyau. Le noyau monolithique, contrairement au microkernel, englobe non seulement l'unité de traitement centrale, la mémoire et l'IPC, mais a également des pilotes de périphérique, des appels de serveur système et une gestion du système de fichiers. Ils sont les meilleurs pour communiquer avec le matériel et effectuer plusieurs tâches simultanément. C'est pour cette raison que les processus ici réagissent à un rythme rapide.

Cependant, les quelques revers sont l'énorme installation et l'empreinte mémoire nécessaire et une sécurité inadéquate car tout fonctionne en mode superviseur. En revanche, un micro-cercle peut réagir lentement aux appels d'application en tant que services utilisateur et le noyau est séparé. Ils sont donc plus petits par rapport au noyau monolithique. Les microkernels sont facilement extensibles, mais plus de code sont nécessaires pour écrire un microkernel. Le noyau Linux est écrit dans les langages de programmation C et d'assemblage.

La relation du noyau Linux avec le matériel

Le noyau peut gérer le matériel du système à travers ce qui est appelé interruption. Lorsque le matériel veut s'interfacer avec le système, une interruption est émise qui interrompt le processeur qui à son tour fait de même vers le noyau. Pour fournir une synchronisation, le noyau peut désactiver les interruptions, que ce soit un seul ou tous. Dans Linux, cependant, les gestionnaires d'interruption ne s'exécutent pas dans un contexte de processus, ils s'exécutent plutôt dans un contexte d'interruption non associé à aucun processus.Ce contexte d'interruption particulier existe uniquement pour laisser un gestionnaire d'interruption réagir rapidement à une interruption individuelle, puis à quitter enfin.

Ce qui rend le noyau Linux différent des autres noyaux Unix classiques?

Des différences significatives existent entre le noyau Linux et les noyaux Unix classiques; comme indiqué ci-dessous:

  1. Linux prend en charge le chargement dynamique des modules de noyau.
  2. Le noyau Linux est préemptif.
  3. Linux a un support multiprocesseur symétrique.
  4. Linux est gratuit en raison de sa nature de logiciel ouvert.
  5. Linux ignore certaines fonctionnalités standard UNIX que les développeurs de noyau appellent «mal conçu."
  6. Linux fournit un modèle d'appareil orienté objet avec des classes d'appareils, des événements à chaud et un système de fichiers de périphérique d'espace utilisateur
  7. Le noyau Linux ne fait pas la différence entre les fils et les processus normaux.

Architechture

Composants du noyau Linux

Un noyau est simplement un gestionnaire de ressources; La ressource gérée peut être un processus de processus, de mémoire ou de matériel. Il gère et arbitre l'accès à la ressource entre plusieurs utilisateurs concurrents. Le noyau Linux existe dans l'espace du noyau, sous l'espace utilisateur, où les applications de l'utilisateur sont exécutées. Pour que l'espace utilisateur communique avec l'espace du noyau, une bibliothèque GNU C est incorporée qui fournit un forum pour l'interface d'appel système pour se connecter à l'espace du noyau et permettre la transition vers l'espace utilisateur.

Le noyau Linux peut être classé en trois niveaux primaires:

  1. L'interface d'appel système; Ceci est le plus haut et entreprend les actions de base telles que lire et écrire.
  2. Le code du noyau; est situé en dessous de l'interface d'appel système, il est commun à toutes les architectures de processeur pris en charge par Linux, il est parfois défini comme un code de noyau indépendant de l'architecture.
  3. Le code dépendant de l'architecture; Il est sous le code indépendant de l'architecture, forme ce que l'on appelle généralement un package d'assistance à la carte (BSP) - il contient un petit programme appelé le chargeur de démarrage qui place le système d'exploitation et les pilotes de périphérique dans la mémoire.

La perspective architecturale du noyau Linux se compose: interface d'appel système, gestion des processus, système de fichiers virtuel, gestion de la mémoire, pile de réseau, architecture et pilotes de l'appareil.

  1. Interface d'appel système; est une couche mince qui est utilisée pour entreprendre des appels de fonction de l'espace utilisateur dans le noyau. Cette interface peut être dépendante de l'architecture
  2. La gestion des processus; est principalement là pour exécuter les processus. Ceux-ci sont appelés le fil dans un noyau et représentent une virtualisation individuelle du processeur particulier
  3. Gestion de la mémoire; La mémoire est gérée dans ce que l'on appelle des pages pour l'efficacité. Linux comprend les méthodes dans lesquelles gérer la mémoire disponible ainsi que les mécanismes matériels pour les mappages physiques et virtuels. L'espace d'échange est également fourni
  4. Système de fichiers virtuel; Il fournit une abstraction d'interface standard pour les systèmes de fichiers. Il fournit une couche de commutation entre l'interface d'appel système et les systèmes de fichiers pris en charge par le noyau.
  5. Pile de réseau; est conçu comme une architecture en couches modélisé après les protocoles particuliers.
  6. Pilotes de périphérique; Une partie importante du code source du noyau Linux se trouve dans les pilotes de périphérique qui rendent un périphérique matériel particulier utilisable. Tutoriel du pilote de périphérique
  7. Code dépendant de l'architecture; Les éléments qui dépendent de l'architecture dont ils se déroulent, il doit donc considérer la conception architecturale pour un fonctionnement et une efficacité normales.

Interfaces

Appels et interruptions du système

Les applications transmettent des informations au noyau via les appels système. Une bibliothèque contient des fonctions avec lesquelles les applications fonctionnent. Les bibliothèques alors, via l'interface d'appel système, ordonne au noyau d'effectuer une tâche qui souhaite l'application. Qu'est-ce qu'un appel système Linux?

Les interruptions offrent un moyen par lequel le noyau Linux gère le matériel des systèmes. Si le matériel doit communiquer avec un système, une interruption sur le processeur fait l'affaire, et cela est transmis au noyau Linux.

Interfaces du noyau Linux

Le noyau Linux propose diverses interfaces aux applications d'espace utilisateur qui effectuent une variété de tâches et ont des propriétés différentes. Il existe deux interface de programmation d'applications distinctes (API); le Espace des utilisateurs du noyau et le noyau interne. L'API Linux est le Espace des utilisateurs de noyau API; Il donne accès à des programmes dans l'espace utilisateur dans les ressources et services système du noyau. Il est composé de l'interface d'appel système et des sous-programmes de la bibliothèque GNU C.

Linux Abi

Cela fait référence à l'espace de l'utilisateur du noyau ABI (interface binaire d'application). Ceci est expliqué comme l'interface qui existe entre les modules de programme. Lorsque vous comparez API et ABI, la différence est que les ABI sont utilisés pour accéder aux codes externes qui sont déjà compilés tandis que l'API sont des structures de gestion des logiciels. Définir un ABI important est majoritairement le travail des distributions Linux que pour le noyau Linux. Un ABI spécifique doit être défini pour chaque ensemble d'instructions, par exemple, x86-64. Les utilisateurs finaux des produits Linux sont intéressés par l'ABIS plutôt que par l'API.

Interface d'appel système

Comme discuté précédemment, cela joue un rôle plus important dans le noyau. C'est une dénomination de toute la partie de tous les appels système existants.

La bibliothèque standard C

Tous les appels système du noyau sont dans la bibliothèque GNU C tandis que l'API Linux est composé de l'interface d'appel système et de la bibliothèque GNU C, également appelée GLIBC.

Interface du système d'exploitation portable (POSIX)

POSIX est un terme collectif de normes pour maintenir la compatibilité entre les systèmes d'exploitation. Il déclare l'API avec les interfaces utilitaires et les coquilles de ligne de commande. L'API Linux, non seulement a les fonctionnalités utilisables définies par le POSIX, mais a également des fonctionnalités supplémentaires dans son noyau:

  1. Troupes sous-système.
  2. Le système de responsable du rendu direct appelle.
  3. UN readahead fonctionnalité.
  4. Getrandom Appel qui est présent dans V 3.17.
  5. Appels système tels que futex, Epoll, épissure, dnotifier, fanotifier et inotifier.

Plus d'informations sur la norme POSIX sont là.

Le noyau modulaire

Les versions précédentes du noyau Linux étaient de telle manière que toutes leurs parties étaient statiques fixées en un, monolithique. Cependant, les noyaux Linux modernes ont la plupart de leurs fonctionnalités contenues dans des modules qui sont mis dans le noyau dynamiquement. Contrairement aux types monolithiques, est appelé grains modulaires. Une telle configuration permet à un utilisateur de charger ou de remplacer les modules dans un noyau en cours d'exécution sans avoir besoin de redémarrer.

Le module de noyau chargé de Linux (LKM)

La façon de base d'ajouter du code dans le noyau Linux passe par l'introduction de fichiers source à l'arborescence source du noyau. Cependant, vous voudrez peut-être ajouter un code pendant que le noyau fonctionne. Le code ajouté de cette façon est appelé module de noyau chargé. Ces modules particuliers effectuent diverses tâches mais sont spécifiées en trois: pilotes de périphériques, pilotes de système de fichiers et appels système.

Le module du noyau chargé peut être comparé aux extensions du noyau dans d'autres systèmes d'exploitation. Vous pouvez mettre un module dans le noyau en le chargeant en tant que LKM ou en le liant dans le noyau de base.

Les avantages du LKMS sur la liaison dans le noyau de base:

  • Reconstruire votre noyau n'est souvent pas nécessaire, gagner du temps et évite les erreurs.
  • Ils aident à déterminer les problèmes du système tels que les bogues.
  • LKMS vous permet d'économiser de l'espace car vous ne les avez chargés que lorsque vous avez besoin de les utiliser.
  • Donnez un temps de maintenance et de débogage beaucoup plus rapide.

Utilisations de LKMS

  1. Pilotes de périphérique; le noyau échange des informations avec du matériel à travers ce. Un noyau doit avoir un pilote d'un appareil avant de l'utiliser.
  2. Pilotes de système de fichiers; Cela traduit le contenu d'un système de fichiers
  3. Appels système; Les programmes dans l'espace utilisateur utilisent des appels système pour acquérir des services à partir du noyau.
  4. Pilotes de réseau; interprète un protocole de réseau
  5. Interprètes exécutables; charge et gère un exécutable.

Compilation du noyau Linux

Contrairement à ce que la plupart des gens disent, compiler le noyau Linux est une tâche simple. Ce qui suit est une illustration étape par étape du processus en utilisant l'une des distributions Linux: Fedora 13 KDE. (Il est conseillé de sauvegarder vos données et de plan.conf juste au cas où quelque chose se passe mal)

  1. De http: // noyau.Site Web Org, téléchargez la source.
  2. Dans votre répertoire de téléchargements, extraire la source du noyau des archives en entrant la commande suivante dans le terminal:
    TAR XVJF Linux-2.6.37.le goudron.bz2
  3. Utilisez la commande Faire MRProper pour effacer la zone de construction avant toute compilation.
  4. Utilisez une configuration dire XConfig, ces configurations sont conçues pour faciliter l'exécution de n'importe quel programme dans Linux.
  5. Spécifiez les modules et les fonctionnalités que vous souhaitez que votre noyau contienne.
  6. Après avoir acquis le .configurer fichier, l'étape suivante consiste à aller à Makefile
  7. Exécutez la commande de Make et attendez que la compilation passe par.
  8. Installez les modules à l'aide de la commande Making modules_install
  9. Copiez votre noyau et la carte du système à / démarrer.
  10. Exécutez le new-kernel-pkg pour construire la liste des dépendances du module et des trucs comme ver.confli

Mise à niveau du noyau

Il est possible de mettre à niveau un noyau Linux d'une ancienne version à une version plus récente, tout en conservant toutes les options de configuration de la version précédente. Pour y parvenir, il faut d'abord sauvegarder le .configurer fichier dans le répertoire source du noyau; C'est dans le cas où quelque chose se passe mal lorsque vous essayez de mettre à niveau votre noyau. Les étapes sont:

  1. Obtenez le dernier code source du noyau principal.site Web de l'organisation
  2. Appliquez les variations à l'ancien arbre source pour l'apporter à la dernière version.
  3. Reconfigurer le noyau en fonction du fichier de configuration du noyau précédent que vous aviez sauvegardé.
  4. Construisez le nouveau noyau.
  5. Maintenant, vous pouvez installer la nouvelle construction du noyau.

Télécharger la nouvelle source; Les développeurs du noyau Linux comprennent que certains utilisateurs peuvent ne pas vouloir télécharger le code source complet pour les mises à jour du noyau, car cela perdrait du temps et la bande passante. Par conséquent, un patch est mis à disposition qui peut mettre à niveau une ancienne version du noyau. Les utilisateurs n'ont qu'à savoir quel patch s'applique à une version particulière, car un fichier de patch de noyau ne mettra à jour le code source qu'à partir d'une version spécifique. Les différents fichiers de correctifs peuvent être appliqués de la manière suivante;

  1. Correctifs de noyau stable qui s'appliquent à la version du noyau de base.
  2. Les correctifs de libération du noyau de base ne s'appliquent qu'à la version du noyau de base précédente
  3. Mise à niveau incrémentielle du correctif d'une version particulière à la version suivante. Cela permet aux développeurs d'éviter l'agitation de la rétrogradation, puis de mettre à niveau leur noyau. Au lieu de cela, ils peuvent passer de leur version stable actuelle à la version stable suivante.

Voici des étapes plus détaillées pour le processus pour mettre à jour votre noyau de Source sur Debian et des binaires pré-construits sur Centos et Ubuntu.

Conclusion

Le noyau Linux agit principalement comme un gestionnaire de ressources agissant comme une couche abstraite pour les applications. Les applications ont une connexion avec le noyau qui à son tour interagit avec le matériel et les services les applications. Linux est un système multitâche permettant à plusieurs processus d'exécuter simultanément. Le noyau Linux est populaire en raison de sa nature open source qui permet aux utilisateurs de modifier le noyau vers ce qui leur convient et leur matériel. Par conséquent, il peut être utilisé dans une variété d'appareils, contrairement à d'autres systèmes d'exploitation.

La caractéristique modulaire du noyau Linux ajoute plus de frisson à ses utilisateurs. Cela est dû à la grande variété de modifications qui peuvent être apportées ici sans redémarrer le système. La flexibilité donne à ses utilisateurs une grande pièce pour actualiser leur imagination.

De plus, la nature monolithique du noyau est un grand avantage car elle a une capacité de traitement élevée que le micro-noyau. Le principal revers avec le type de noyau Linux est que si l'un de ses services échoue, alors l'ensemble du système tombe avec. Les dernières versions ont été conçues d'une manière que si un nouveau service est ajouté, il n'est pas nécessaire de modifier l'ensemble du système d'exploitation. Ceci est une amélioration par rapport aux versions précédentes.

Sources

  1. Noyau Wikipedia Linux
  2. Interfaces du noyau Wikipedia Linux
  3. Module de noyau chargé linux comment
  4. linux.Guide des débutants com
  5. https: // www.quora.com / what-are-good-tutorials-to-learn-linux-kernel
  6. https: // Unix.stackexchange.com / Questions / 1003 / Linux-Kernel-Good-Beginners-tutorial
  7. https: // www.Howtogeek.com / howto / 31632 // what-is-the-linux-kernel-and-what-does-it-do /