Il est long et contient beaucoup de contenu technique, alors cliquez pour le suivre afin de ne pas vous laisser distraire.
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. Le matériel informatique étapes de transplantation du noyau Linux est riche en périphériques, processeurs, mémoire, disques durs et autres appareils électroniques qui constituent 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 est appelé système d'exploitation. Dans la terminologie Linux, il est appelé « noyau » ou « noyau ». Les principaux modules (ou composants) du noyau Linux sont répartis dans les 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 initialisation du système (démarrage), appels système, etc. .
Le noyau Linux implémente de nombreuses propriétés architecturales importantes. À un niveau supérieur ou inférieur, le noyau est défini en sous-systèmes. Linux peut également être considéré dans son ensemble, puisqu'il intègre tous ces services de base dans le noyau. Ceci est différent de l'architecture du micro-noyau. La première fournira certains services de base, tels que la communication, les E/S, la mémoire et la gestion des processus, et des services plus spécifiques sont insérés dans la couche du micro-noyau.
Au fil du temps, le noyau Linux est devenu plus efficace en termes de mémoire vidéo et d'utilisation du processeur, et est très stable. Et pour Linux, le plus intéressant est que malgré cette taille et cette complexité, il a toujours une bonne portabilité. Linux est compilé pour fonctionner sur un grand nombre de processeurs et de plates-formes avec des contraintes et exigences architecturales différentes. Un contre-exemple est que Linux peut fonctionner sur un processeur doté d'une unité de gestion de la mémoire graphique (MMU), ou sur des processeurs qui ne fournissent pas d'unité de gestion de la mémoire graphique (MMU). Le port uClinux du noyau Linux prend en charge les non-MMU. Dans l'industrie informatique
Tels que : développement embarqué, développement de pilotes, développement Android, développement C++, développement Java si vous entrez en contact avec les aspects sous-jacents
Alors
Comprendre le noyau : cela aidera votre travail de développement à générer les avantages correspondants.
Comprendre le noyau : cela vous permettra de mieux comprendre les principes sous-jacents et le code source de développement.
Le tronc commun est un bonus pour l'épreuve écrite.
Kernel est le seul moyen de devenir un expert.
Que vous soyez engagé ou non dans le développement du noyau, la technologie du noyau est le meilleur choix pour réserver des compétences, élargir vos horizons et élargir vos compétences techniques.
Apprenez ensuite :
Analyse du noyau Linux « Sécurité des vulnérabilités et mémoire vidéo virtuelle »
Analyse du principe et de l'architecture du socket du noyau Linux
Analyse du "Modèle de mémoire vidéo physique" du noyau Linux
Parcours d'apprentissage du noyau recommandé Si vous aimez étudier le noyau et souhaitez en savoir plus sur le noyau, vous pouvez vous y référer. 1 : Principes du système d'exploitation/Sujet de compilation 1 : Principes du système d'exploitation
Gestion des processus : état et commutation des processus, exclusion mutuelle et synchronisation des processus, planification des processeurs, blocage des processus
Gestion de la mémoire vidéo : structure de stockage, gestion du stockage des partitions, gestion des segments, gestion des pages, stockage virtuel
Gestion des appareils : cache de disque C, RAID (matrice de disques C), tampon d'E/S
Gestion des fichiers : structure d'organisation des fichiers, principe des fichiers tas, gestion de l'espace de stockage, gestion des répertoires de fichiers
2 : Connaissance approfondie du langage assembleur
Architecture x86/x86_64 : architecture x86/x86_64, bases du langage assembleur, transfert de données, opérations arithmétiques, adressage, traitement des procédures et des conditions, traitement en virgule flottante et codage des instructions
Architecture ARM : microprocesseur principal ARM, système d'instructions commun ARM, programme d'assemblage et débogage ARM, interruption d'exception/gestionnaire de réinitialisation/interruption d'exception SWI, installation et configuration de RealViewMDK, assemblage ARM et implémentation hybride C, instructions de chargement et de stockage des données Réaliser
Deux : Gestion des processus Thème 1 : Bases des processus
Structure organisationnelle du code source du noyau Linux
Principe du processus et état du processus
Cycle de vie et appels système : principe de copie sur écriture, disposition de la mémoire des processus, gestion de la pile de processus, implémentation des appels système
Analyse de la structure des données Task_struct
2 : Planification des processus
Stratégies de planification : SCHED_DEADLINE, SCHED_FIFO, SCHED_RR, SCHED_NORMAL
Priorité du processus : priorité de planification, priorité statique, priorité normale, priorité en temps réel
Analyse des classes de planification : stop_sched_class, dl_sched_class, rt_sched_class, cfs_sched_class, ralenti_shced_class
Planification SMP : migration des threads/isolation des processeurs, équilibrage de la charge du processeur pour la planification des délais, équilibrage de la charge du processeur pour la planification en temps réel et équilibrage de la charge du processeur pour une planification équitable
Trois : Gestion de la mémoire vidéo Thème 1 : Principe de la mémoire vidéo
Organisation modèle SMP/NUMA
Structure et modèle d'organisation de la mémoire chimique
Cache de table de pages/table de pages : structure de répertoires du framework de table de pages, format et gestion d'entrée TLB, identifiant d'espace d'adressage (ASID), identifiant de machine virtuelle (VMID)
Cache processeur : structure et stratégie du cache, cohérence du cache SMP, contrôle du cache et du TLB
Mappage de la mémoire vidéo : analyse de la structure des données, création du mappage de la mémoire vidéo, suppression du mappage de la mémoire vidéo, implémentation des appels système
2 : Mémoire vidéo virtuelle
Allocateur de blocs : principe de l'allocateur de mémoire vidéo, allocation de page et libération de page, allocateur de bloc SLAB, allocateur de bloc SLOB, allocateur de bloc SLUB, socket de planification système
Modules de pages complets : pages géantes standards, pages géantes transparentes, algorithme LRU et mappage inversé, principes de recyclage de pages direct et asynchrone, plan d'exécution pour le recyclage des pages inactives, principes d'échange de pages, principes de cache de dalle de recyclage, gestion des exceptions de défauts de page, fragmentation de la mémoire. , lancement du recyclage de la mémoire vidéo, structure/création/activation des données de la zone d'échange, principes techniques d'épuisement de la mémoire, méthode d'étalonnage des exceptions de page manquante, outil d'inspection KASAN, gestion des exceptions de page d'échange manquantes
Barrière de mémoire vidéo et technologie d'exclusion mutuelle du noyau
Apprenez ensuite :
Le noyau doit apprendre|"Mémoire vidéo physique et mémoire vidéo virtuelle"|Gestion VMA/malloc/mmap
Points techniques du noyau Linux | Chemin d'allocation de pages | Implémentation de l'allocateur de dalle
3 : Appel du système de mémoire vidéo
kmalloc/vmalloc
Principe du pool de mémoire vidéo et opérations de mise en œuvre
Paramètres d'optimisation de la mémoire vidéo et mise en œuvre
Mise en œuvre de la mise en cache des pages
Mise en place du cache de blocs
4 : outil d'analyse des performances des performances
Mécanisme de principe de performance et configuration d'installation
Commande de collecte de données Perf 29 applications d'outils
perf collecte des données pour analyser le graphique de flamme
Quatre : Pile de contrats réseau Sujet 1 : Infrastructure réseau
Contrat ICMP
Contrat de datagramme utilisateur (UDP)
Contrat de contrôle de transmission (TCP)
Contrat de Transport de Contrôle de Flux (SCTP)
Contrat de contrôle de diaphonie datagramme (DCCP)
Routage de la politique IPv4
Module de sous-système sans fil : analyse de la structure de trame 802.11MAC, numérisation/authentification/association, implémentation de réception et de transmission mac80211, haut débit (802.11n), réseau maillé (802.11s)
Message de redirection IPv4/table FIB
2 : Pile de contrats réseau
ARP (Contrat de Résolution d'Adresse)
Contrat de datagramme utilisateur (UDP)
Contrat de contrôle de transmission (TCP)
Routage intermédiaire : routage multicast, routage de politique, routage multipath
Recevoir/Envoyer des paquets IPv4
Recevoir/Envoyer des paquets IPv6
Architecture de pile InfiniBand : structure RDMA (Remote Direct Memory Access), composants et adressage InfiniBand, fonctions et packages de données InfiniBand, schéma de processus d'enregistrement/réception de package/envoi de package de pile de protocoles
Apprenez maintenant : maîtrisez l'architecture de la pile de contrats du noyau Linux en 90 minutes
3 : Appel API système
Appel API réseau POSIX
Principe et mise en œuvre du noyau epoll
Configuration des paramètres du système réseau
V : Sujet 1 du pilote de périphérique : Sous-système du pilote de périphérique
Principe du mécanisme d'E/S
Allocation et gestion des ressources
Sous-système de périphérique de caractère
Bloquer le sous-système de périphérique
Pilote de carte d'interface réseau
2 : Modèle d'appareil Linux
Analyse approfondie de LDM : structure de données LDM, pilote de périphérique, structure kobject, kobj_type, collection d'objets du noyau
Modèle d'appareil et sysfs : fichiers et propriétés sysfs, permettant l'adressage des fichiers de propriétés sysfs,
3 : Fonctionnement du périphérique de caractère
Appareil principal et appareil secondaire
Ouvrir le fichier de l'appareil
Attribuer et enregistrer des appareils de caractères
Implémentation de l'opération d'écriture de fichiers : mode ouverture/libération, mode lecture/écriture, méthode llseek/poll, remplissage de la structure file_operations
Insérer et supprimer des modules
4 : Bloquer le fonctionnement de l'appareil
Bloquer la représentation de l'appareil et la structure des données
Structure des données BIO
Appel système ioctl
Module de bus : bus ISA, bus PCI/PCI-E, bus USB, bus VESA, bus I2C
5 : Pilote de périphérique de carte réseau
Structure des données : structure du tampon de socket, structure des sockets réseau
Gestion des tampons et contrôle de la concurrence
Pilote réseau ISA
Mode de transfert asynchrone pour ATM
Débit du réseau
Apprenez ensuite : Analyse du code source du processus de communication du socket du noyau Linux
Six : Composant du noyau Thème 1 : Gestion du temps
Sous-système de temps universel
Minuteur de fréquence d'images élevée
Structure de données d'horloge dynamique
Appel système de minuterie
2 : Mise en cache des pages et des blocs
Fonctionnement et mise en œuvre de la structure du cache de pages
Structure et mise en œuvre du cache de blocage
Structure des données de l'espace d'adresse et arborescence des pages
3 : Synchronisation des données
Mécanisme de synchronisation du système numérique
synchronisation des inodes et diaphonie
Forcer la réécriture et la synchronisation complète
4 : Activité du noyau
Type d'interruption/IRQ matériel
Structure de données irq_desc
Gérer les IRQ et les interruptions logicielles
Créer/enregistrer/exécuter une tâche
File d'attente et montant d'achèvement
Seven : Sujet sur le système de fichiers
1 : Système de fichiers virtuel VFS
Recherche sur les types de systèmes de fichiers et les modèles de fichiers
Structure des données : super bloc (super_block), descripteur de montage (structure de montage), nœud d'index (structure inode), entrée de répertoire (structure dentaire)
Appels du système de fichiers : ouvrir/fermer des fichiers, créer/supprimer des fichiers, lire/écrire des fichiers, principes techniques de réécriture de fichiers/implémentation de socket
Monter le système de fichiers : processus de traitement de montage des appels système, lier l'espace de noms de montage/montage, monter/enregistrer le système de fichiers rootfs
Pas de système de fichiers persistant : système de fichiers proc (structure de données proc, chargement/gestion des éléments de données proc, implémentation de la lecture et de l'écriture des données), système de fichiers simple (fichier séquentiel, système de fichiers de planification, pseudo-système de fichiers)
2 : système de fichiers du lecteur C
Système de fichiers Ext2 : structure chimique et structure des données, création du système de fichiers, système de fichiers d'exploitation
Système de fichiers Ext3
Système de fichiers Ext4
Journal JBD2
3 : Système de fichiers de l'espace utilisateur
Conception et principe de l'architecture du fusible
Cinq files d'attente principales
Fuse le processus de l'espace utilisateur et le plan de mise en œuvre
Huit : Sujet pratique du projet Kernel
1-Méthode de compilation du noyau Linux et de mise en œuvre du remplacement du système
2-Plan de mise en œuvre de la communication/gestion inter-processus (autorisation/priorité)
Implémentation du pilote de carte réseau 3-NIC
Implémentation de la mémoire vidéo utilisateur de mappage/appel système 4-mmap
5-Implémentation du système de paramètres de mémoire vidéo Linux
6-Débogage et optimisation des performances (debugfs/printk/ftrace)
7-Mécanisme de mise en œuvre de l'allocation de mémoire vidéo de l'allocateur de bloc Slab
Implémentation d'un thread de 8 tâches/de première ligne et d'un minuteur
9-Implémentation du système de fichiers proc du noyau Linux
10-Implémentation iptables du pare-feu du noyau 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!