Maison Opération et maintenance exploitation et maintenance Linux Quels sont les sous-systèmes du noyau Linux ?

Quels sont les sous-systèmes du noyau Linux ?

Nov 26, 2021 am 10:46 AM
linux内核 Sous-système

Le noyau Linux comporte 5 sous-systèmes : 1. Process Scheduling Control System (SCHED) ; 2. Memory Management System (MM), dont la fonction principale est de contrôler plusieurs processus pour partager en toute sécurité la zone de mémoire principale ; VFS); 4. Interface réseau (NET); 5. Communication inter-processus (IPC).

Quels sont les sous-systèmes du noyau Linux ?

L'environnement d'exploitation de ce tutoriel : système Ubuntu 16.04, ordinateur Dell G3.

Kernel :

En informatique, il s'agit d'un programme informatique utilisé pour gérer les exigences d'E/S (entrées et sorties) de données émises par un logiciel, traduire ces exigences en instructions de traitement de données et les transmettre au processeur central (CPU). ) et d'autres composants électroniques de l'ordinateur, il s'agit de l'élément le plus fondamental du système d'exploitation moderne. Il s'agit d'un logiciel qui fournit un accès sécurisé au matériel informatique pour de nombreuses applications. Cet accès est limité et le noyau détermine quand et combien de temps un programme peut fonctionner sur une certaine partie du matériel. Opérer directement sur le matériel est très complexe. Par conséquent, le noyau fournit généralement une méthode d’abstraction matérielle pour effectuer ces opérations. Grâce à des mécanismes de communication inter-processus et à des appels système, les processus d'application peuvent contrôler indirectement les ressources matérielles requises (en particulier les processeurs et les périphériques IO).

Quels sont les sous-systèmes du noyau Linux ?

Le noyau Linux se compose principalement de la planification des processus (SCHED), de la gestion de la mémoire (MM), du système de fichiers virtuel (VFS), de l'interface réseau (NET) et de l'inter- communication de processus (IPC) Il se compose de 5 sous-systèmes, comme le montre la figure ci-dessous.

Quels sont les sous-systèmes du noyau Linux ?

1. Planification des processus

La planification des processus contrôle l'accès de plusieurs processus du système au CPU, de sorte que plusieurs processus puissent être exécutés en "micro série et macro parallèle" dans le CPU . La planification des processus est au centre du système et d'autres sous-systèmes du noyau en dépendent car chaque sous-système doit suspendre ou reprendre les processus.

Comme le montre la figure ci-dessous, le processus Linux bascule entre plusieurs états.


Transition de l'état du processus Linux

Dans la programmation du pilote de périphérique, lorsque la ressource demandée ne peut pas être satisfaite, le pilote planifiera généralement l'exécution d'autres processus et mettra ce processus en état de veille jusqu'à ce que la ressource demandée soit réveillée. et entrez dans l'état prêt. Le sommeil est divisé en sommeil interrompu et sommeil ininterrompu. La différence entre les deux est que le sommeil interrompu se réveille lorsqu'il reçoit un signal.

Un processus qui est complètement dans l'état TASK_UNINTERRUPTIBLE ne peut même pas être "tué", donc le noyau après Linux 2.6.26 a également un état TASK_KILLABLE, qui est égal à "TASK_WAKEKILL|TASK_UNINTERRUPTIBLE" et peut répondre aux signaux fatals.

Dans le noyau Linux, la structure task_struct (include/linux/sched.h) est utilisée pour décrire le processus. Cette structure contient des pointeurs qui décrivent les ressources mémoire, les ressources du système de fichiers, les ressources de fichiers, les ressources tty, le traitement du signal, etc. .du processus. Les threads Linux sont implémentés à l'aide d'un modèle de processus léger. Lorsqu'un thread est créé dans l'espace utilisateur via l'API pthread_create(), le noyau crée simplement une nouvelle task_struct et pointe tous les pointeurs de ressource de la nouvelle task_struct vers celle qui l'a créée. pointeur de task_struct.

La grande majorité des processus (et plusieurs threads dans le processus) sont créés par des applications de l'espace utilisateur Lorsqu'elles ont des exigences en matière de ressources sous-jacentes et d'accès matériel, elles entreront dans l'espace du noyau via des appels système. Parfois, dans la programmation du noyau, si plusieurs tâches doivent être exécutées simultanément, des threads du noyau peuvent être démarrés et ces threads ne disposent pas d'espace utilisateur. La fonction pour démarrer le thread du noyau est : pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);

2. Gestion de la mémoire

La fonction principale de la gestion de la mémoire est de contrôler. la sécurité de plusieurs processus partagés dans la zone de mémoire principale. La gestion de la mémoire Linux termine la conversion de la mémoire virtuelle en mémoire physique pour chaque processus lorsque le CPU fournit une unité de gestion de mémoire (MMU). Linux 2.6 a introduit la prise en charge des processeurs sans MMU.

Comme le montre la figure, d'une manière générale, chaque processus de Linux sur un processeur 32 bits bénéficie de 4 Go d'espace mémoire, 0 à 3 Go appartiennent à l'espace utilisateur, 3 à 4 Go appartiennent à l'espace noyau et l'espace noyau a un certain impact. sur la mémoire conventionnelle et les E/S, la mémoire de l'appareil et la mémoire haut de gamme sont gérées différemment. Les limites spécifiques entre l'espace noyau et l'espace utilisateur peuvent être ajustées sous l'option de configuration du noyau Fonctionnalités du noyau → Répartition de la mémoire, la limite peut être définie sur 2 Go ou 3 Go.


Espace d'adressage du processus Linux

Comme le montre la figure ci-dessus, la gestion globale de la mémoire du noyau Linux est relativement importante, y compris l'algorithme Buddy sous-jacent, qui est utilisé pour gérer l'occupation de chaque page, l'allocateur de dalle du espace noyau et gestion secondaire des bibliothèques C dans l'espace utilisateur. De plus, le noyau fournit également une prise en charge du cache de pages, en utilisant la mémoire pour mettre en cache le disque, et le thread de vidage des informations de chaque périphérique de support est utilisé pour vider le cache des pages sales sur le disque. Kswapd (processus d'échange) est le thread du noyau utilisé pour le recyclage des pages (y compris les pages sauvegardées sur des fichiers et les pages anonymes) sous Linux. Il utilise l'algorithme le moins récemment utilisé (LRU) pour le recyclage de la mémoire.

3. Système de fichiers virtuel

Comme le montre la figure,


Système de fichiers virtuel Linux

Le système de fichiers virtuel Linux masque les détails spécifiques de divers matériels et fournit une interface unifiée pour tous les appareils . De plus, il est indépendant de chaque système de fichiers spécifique et constitue une abstraction de différents systèmes de fichiers. Il fournit vfs_read(), vfs_write() et d'autres interfaces unifiées pour les applications de couche supérieure, et appelle les fonctions membres de la structure file_operations implémentées dans le système de fichiers sous-jacent spécifique ou le pilote de périphérique.

4. Interface réseau

L'interface réseau permet d'accéder à diverses normes réseau et de prendre en charge divers matériels réseau. Comme le montre la figure 3.8, l'interface réseau sous Linux peut être divisée en protocoles réseau et pilotes réseau. La partie protocole réseau est responsable de la mise en œuvre de tous les protocoles de transmission réseau possibles. Le pilote de périphérique réseau est responsable de la communication avec tous les périphériques matériels. les périphériques ont des pilotes de périphérique correspondants.


Architecture réseau Linux

Le noyau Linux prend en charge de nombreux types de piles de protocoles, telles qu'Internet, UNIX, CAN, NFC, Bluetooth, WiMAX, IrDA, etc. Les applications de couche supérieure utilisent uniformément l'interface socket.

5. Communication inter-processus

La communication inter-processus prend en charge la communication entre les processus. Linux prend en charge une variété de mécanismes de communication entre les processus, notamment les sémaphores, la mémoire partagée, les files d'attente de messages, les canaux, les sockets de domaine UNIX, etc. assister plusieurs processus, un accès mutuellement exclusif à plusieurs ressources, une synchronisation inter-processus et une transmission de messages. Dans les applications Linux actuelles, les utilisateurs ont tendance à utiliser les sockets de domaine UNIX plutôt que les files d'attente de messages et autres mécanismes du System V IPC. Le noyau Android a ajouté une nouvelle méthode de communication inter-processus Binder.

Les dépendances entre les 5 composants du noyau Linux sont les suivantes :

  • La relation entre l'ordonnancement des processus et la gestion de la mémoire : Ces deux sous-systèmes sont dépendants l'un de l'autre. Dans un environnement multi-programmes, si un programme veut s'exécuter, un processus doit être créé pour celui-ci. La première chose à faire lors de la création d'un processus est de charger le programme et les données dans la mémoire.

  • La relation entre la communication inter-processus et la gestion de la mémoire : Le sous-système de communication inter-processus s'appuie sur la gestion de la mémoire pour prendre en charge le mécanisme de communication en mémoire partagée. Ce mécanisme permet à deux processus non seulement d'avoir leur propre espace privé, mais également d'y accéder. zone de mémoire commune.

  • La relation entre le système de fichiers virtuel et l'interface réseau : Le système de fichiers virtuel utilise l'interface réseau pour prendre en charge le système de fichiers réseau (NFS), et utilise également la gestion de la mémoire pour prendre en charge les périphériques RAMDISK.

  • La relation entre la gestion de la mémoire et le système de fichiers virtuel : la gestion de la mémoire utilise le système de fichiers virtuel pour prendre en charge l'échange, et le processus d'échange est régulièrement planifié par le planificateur, c'est pourquoi la gestion de la mémoire repose sur la planification des processus. Lorsque la carte mémoire à laquelle un processus accède est remplacée, la gestion de la mémoire envoie une requête au système de fichiers virtuel et, en même temps, suspend le processus en cours d'exécution.

En plus de ces dépendances, tous les sous-systèmes du noyau dépendent également de certaines ressources communes. Ces ressources incluent les API utilisées par tous les sous-systèmes, telles que les fonctions d'allocation et de libération d'espace mémoire, les fonctions d'émission de messages d'avertissement ou d'erreur et les interfaces de débogage fournies par le système.

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explorer les fonctions du noyau Linux : une introduction détaillée aux cinq parties principales Explorer les fonctions du noyau Linux : une introduction détaillée aux cinq parties principales Mar 21, 2024 am 09:57 AM

En tant qu'élément central du système d'exploitation, le noyau Linux est responsable de fonctions importantes telles que la gestion des ressources matérielles et la fourniture d'appels système. Cet article se penchera sur les cinq parties principales du noyau Linux, notamment la gestion des processus, le système de fichiers, la communication réseau, les pilotes de périphériques et la gestion de la mémoire, et fournira une introduction détaillée et des exemples de code. 1. Gestion des processus Création de processus Dans le noyau Linux, la création de processus est implémentée via l'appel système fork(). Voici un exemple de code simple : #include

Combat pratique | Adresse d'entrée RISC-V Linux optimisation de la mémoire réservée 2M Combat pratique | Adresse d'entrée RISC-V Linux optimisation de la mémoire réservée 2M Aug 01, 2023 pm 03:37 PM

L'article précédent a analysé la création de table de pages pour le démarrage de RISC-V Linux. Il a été mentionné que l'adresse d'entrée RISC-V Linux doit être alignée sur 2M. Aujourd'hui, je vais parler de la façon de résoudre le problème d'alignement 2M ou d'en optimiser une partie. la mémoire.

Le support non-MMU est-il fourni par le port uClinux du noyau Linux ? Le support non-MMU est-il fourni par le port uClinux du noyau Linux ? Jan 26, 2024 pm 05:18 PM

Il est long et contient beaucoup de contenu technique, alors cliquez pour le suivre et vous ne vous perdrez pas. Préface : Comprendre le noyau Linux Un système informatique est une symbiose de matériel et de logiciels. Ils sont interdépendants et indissociables. Les étapes de transplantation du noyau Linux sur le matériel informatique comprennent les périphériques, les processeurs, la mémoire, les disques durs et autres appareils électroniques qui composent le cylindre de l'ordinateur. Et sans logiciel pour le faire fonctionner et le contrôler, il ne peut pas fonctionner tout seul. Le logiciel qui effectue ce travail de contrôle s'appelle le système d'exploitation, appelé « noyau » dans la terminologie Linux, et peut également être appelé « noyau ». Les principaux modules (ou composants) du noyau Linux sont divisés en parties suivantes : gestion du stockage, gestion du processeur et des processus, système de fichiers, gestion des périphériques et pilotes, forum Linux de communication réseau et système.

Des conseils secrets pour l'optimisation de la pile de protocole TCP du noyau Linux révélés Des conseils secrets pour l'optimisation de la pile de protocole TCP du noyau Linux révélés Jan 28, 2024 am 09:39 AM

Bonjour chers lecteurs ! Ici, j'ai l'honneur de partager avec vous l'expérience et les compétences précieuses que j'ai accumulées en tant qu'ingénieur réseau senior grâce à mes compétences professionnelles dans le développement et l'optimisation de la pile de protocole TCP du noyau Linux. Je crois que grâce à cet article, nous pouvons apprendre les uns des autres et en discuter, et vous apporter des documents de référence pratiques et utiles qui sont fortement intéressés par ce domaine ou qui effectuent un travail connexe. 1. Établissement d'une connexion TCP L'établissement d'une connexion TCP est une transaction clé de la pile de protocoles TCP, mais il n'est pas rare de rencontrer de nombreux problèmes de connexion. Après un examen attentif et un débogage détaillé, j'ai découvert certains problèmes courants et pratiques ainsi que leurs solutions, notamment la prévention des attaques par inondation SYN (en ajustant les paramètres du système) et la gestion de la congestion du réseau (c'est-à-dire en utilisant TCPFastOp

Noyau Linux : révéler le BOSS caché des systèmes d'exploitation informatiques Noyau Linux : révéler le BOSS caché des systèmes d'exploitation informatiques Mar 24, 2024 am 09:10 AM

Discute de l'idée selon laquelle le noyau Linux joue un rôle important dans la conception et la mise en œuvre du noyau Linux. Grâce à une analyse approfondie de la conception du noyau Linux et de ses applications pratiques, il révèle sa position et son influence de premier plan dans ce domaine. 1. Gestion optimisée de la mémoire En utilisant la technologie de gestion de la mémoire virtuelle, le noyau Linux peut effectuer efficacement l'allocation et le recyclage de la mémoire. À l'aide de l'algorithme de page de remplacement, le noyau Linux est conçu et implémenté pour gérer avec précision la relation de mappage entre la mémoire physique et la mémoire virtuelle. Des ajustements flexibles peuvent être effectués en fonction des besoins spécifiques de l'application, améliorant ainsi les performances globales du système. 2. Le puissant noyau de gestion des processus utilise son excellente technologie multitâche pour permettre à plusieurs processus de coexister harmonieusement dans un seul système. Soigneusement formulé

Une exploration approfondie de la distribution du code source du noyau Linux Une exploration approfondie de la distribution du code source du noyau Linux Mar 15, 2024 am 10:21 AM

Il s'agit d'un article de 1 500 mots qui explore en profondeur la distribution du code source du noyau Linux. En raison de l'espace limité, nous nous concentrerons sur la structure organisationnelle du code source du noyau Linux et fournirons quelques exemples de code spécifiques pour aider les lecteurs à mieux comprendre. Le noyau Linux est un noyau de système d'exploitation open source dont le code source est hébergé sur GitHub. La distribution entière du code source du noyau Linux est très vaste, contenant des centaines de milliers de lignes de code, impliquant plusieurs sous-systèmes et modules différents. Pour mieux comprendre le code source du noyau Linux

Explorez la relation entre le système Android et le noyau Linux Explorez la relation entre le système Android et le noyau Linux Mar 14, 2024 pm 12:48 PM

Le système Android et le noyau Linux sont deux entités étroitement liées, et la relation entre eux est étroite et complexe. Dans le système Android, le noyau Linux joue un rôle important, fournissant les pilotes matériels sous-jacents et la prise en charge des appels système pour le système Android. Cet article explorera la relation entre le système Android et le noyau Linux, la manière dont ils interagissent et fonctionnent ensemble, et fournira quelques exemples de code spécifiques. Android est un système d'exploitation mobile développé sur la base du noyau Linux et est principalement utilisé pour les appareils mobiles tels que les smartphones et les tablettes. L

Savez-vous vraiment comment déboguer les pannes du noyau Linux ? Vous serez éclairé après avoir lu cet article ! Savez-vous vraiment comment déboguer les pannes du noyau Linux ? Vous serez éclairé après avoir lu cet article ! Aug 03, 2023 pm 04:50 PM

Le noyau Linux est le cœur du système d'exploitation et contrôle l'accès aux ressources système telles que le processeur, les périphériques d'E/S, la mémoire physique et les systèmes de fichiers. Pendant le processus de démarrage et pendant que le système est en cours d'exécution, le noyau écrit divers messages dans le tampon en anneau du noyau. Ces messages incluent diverses informations sur les opérations du système.

See all articles