
Cours de programmation système
Passez de l'écriture de code applicatif à la maîtrise de l'ensemble de la pile système — interfaces noyau, gestion de la mémoire, concurrence et débogage au niveau matériel. Ce cours vous offre les bases techniques approfondies qui distinguent les ingénieurs système seniors des autres. Chaque concept est ancré dans des outils réels, du code réel et des scénarios de production réels.
Ce que vous allez apprendre:
Vous construirez un modèle mental complet de la façon dont un logiciel interagit avec le matériel et le noyau Linux, en partant de l'architecture du CPU et de la disposition de la mémoire des processus. Vous maîtriserez le langage C pour les travaux système, notamment la gestion manuelle de la mémoire, l'arithmétique des pointeurs et les schémas de codage défensif. Le cours couvre l'assembleur x86-64, le débogage bas niveau avec GDB et l'analyse binaire avec objdump. Vous implémenterez la création de processus, les threads POSIX, les primitives de synchronisation et la communication inter-processus. Les sujets avancés incluent la mémoire virtuelle, la conception d'allocateur personnalisé, les entrées-sorties fichier haute performance et le développement de modules noyau. Le renforcement de la sécurité, les mécanismes internes de la conteneurisation, l'ordonnancement temps réel et le profilage des performances avec perf complètent le programme de formation.
Comment vous étudiez de façon pratique Cours de programmation système
Comment vous pratiquez Cours de programmation système
Pour vous, entreprise, qui souhaitez former votre équipe
Avec Dedika pour les entreprises, le cours inclut des exercices et des exemples adaptés à votre propre activité et aux besoins spécifiques de votre entreprise.
Contenu du cours
8 Chapitres • 40 LeçonsDurée entre 4 et 360 heures (vous décidez)
Chapitre 1MasquerCacher les détailsVoir les détailsFondamentaux de la programmation système
Fondamentaux de la programmation système
Leçon 1 • Chaîne d'outils et environnement de construction
Configure les compilateurs, les éditeurs de liens, les assembleurs et les débogueurs utilisés tout au long du cours. Garantit que chaque étudiant peut compiler, lier et inspecter des binaires dès le premier jour.
Leçon 2 • Abstractions du système d'exploitation
Présente l'espace noyau par rapport à l'espace utilisateur, les appels système et la gestion des ressources du système d'exploitation. Relie les concepts matériels aux interfaces logicielles que les programmeurs utilisent quotidiennement.
Leçon 3 • Disposition de la mémoire des processus
Examine les segments de pile, de tas, BSS, de données et de texte dans un processus en cours d'exécution. Fournit le modèle spatial nécessaire pour l'arithmétique des pointeurs et la gestion de la mémoire.
Leçon 4 • Essentiels de l'architecture informatique
Couvre les registres du CPU, les cycles d'instructions et la hiérarchie mémoire. Établit le vocabulaire matériel nécessaire pour tous les sujets ultérieurs sur les systèmes.
Leçon 5 • Niveaux de privilège et anneaux de protection
Explique les anneaux de privilège imposés par le matériel et comment le système d'exploitation applique l'isolation. Prépare les étudiants à raisonner sur les limites de sécurité dans le code système.
Chapitre 2MasquerCacher les détailsVoir les détailsProgrammation en C pour le travail système
Programmation en C pour le travail système
Leçon 1 • Types de données et représentation en mémoire
Couvre les largeurs d'entiers, l'endianness, l'alignement et le remplissage dans les structures. Ancre les étudiants dans la façon dont les types C se traduisent en octets réels en mémoire.
Leçon 2 • Gestion des erreurs et codage défensif
Présente errno, les conventions de valeur de retour et les stratégies d'assertion en C. Développe des habitudes qui empêchent les défaillances silencieuses dans le code système de production.
Leçon 3 • Préprocesseur C et macros
Explique les gardes d'inclusion, les macros de type objet et de type fonction, et la compilation conditionnelle. Permet aux étudiants d'écrire des en-têtes système portables et configurables.
Leçon 4 • Gestion manuelle de la mémoire
Couvre malloc, calloc, realloc et free, ainsi que les erreurs d'allocation courantes. Les étudiants apprennent à détecter les fuites et à utiliser des outils de type valgrind pour la vérification.
Leçon 5 • Pointeurs et arithmétique des pointeurs
Enseigne la déclaration de pointeur, le déréférencement et l'arithmétique sur les tableaux et les tampons. Permet directement la gestion manuelle de la mémoire et l'accès aux registres matériels.
Chapitre 3MasquerCacher les détailsVoir les détailsLangage assembleur et débogage de bas niveau
Langage assembleur et débogage de bas niveau
Leçon 1 • Assembleur inline en C
Enseigne la syntaxe d'assembleur inline étendu de GCC, les contraintes et les listes de registres endommagés. Permet un accès direct au matériel depuis C sans fichier assembleur séparé.
Leçon 2 • Jeu d'instructions de base
Couvre les instructions de déplacement de données, arithmétiques, logiques et de contrôle de flux. Donne aux étudiants suffisamment de vocabulaire pour lire la sortie du compilateur et écrire de petites routines.
Leçon 3 • Jeu de registres et conventions d'appel x86-64
Mappe les registres généraux, de segment et SIMD à leurs rôles. Établit le contrat ABI que le code C et assembleur doit respecter lors de l'interopérabilité.
Leçon 4 • Analyse binaire avec désassembleurs
Utilise objdump et des outils similaires pour inspecter les binaires compilés et les bibliothèques partagées. Relie la compréhension au niveau du code source au code machine réel dans les artefacts de production.
Leçon 5 • Techniques de débogage de bas niveau
Applique GDB au niveau de l'assembleur : points d'arrêt, points d'observation et inspection des registres. Les étudiants diagnostiquent les plantages et la corruption mémoire en lisant l'état machine brut.
Chapitre 4MasquerCacher les détailsVoir les détailsGestion des processus et des threads
Gestion des processus et des threads
Leçon 1 • Signaux et événements asynchrones
Explique la délivrance des signaux, le masquage et l'enregistrement de gestionnaires avec sigaction. Prépare les étudiants à écrire du code compatible avec les signaux et à gérer les notifications asynchrones du système d'exploitation.
Leçon 2 • Création et cycle de vie des processus
Couvre les sémantiques de fork, exec, wait et exit dans les environnements POSIX. Les étudiants comprennent comment le système d'exploitation suit l'état d'un processus de la création à la terminaison.
Leçon 3 • Fondamentaux des threads POSIX
Présente la création, la jonction et le détachement de pthread ainsi que les attributs de thread. Établit le modèle de threading utilisé dans tous les sujets de concurrence suivants.
Leçon 4 • Primitives de synchronisation
Couvre les mutex, les variables conditionnelles, les sémaphores et les verrous de lecture-écriture. Les étudiants appliquent chaque primitive pour éliminer les conditions de course dans les programmes à mémoire partagée.
Leçon 5 • Communication inter-processus
Examine les tubes, les FIFO, la mémoire partagée et les files de messages pour l'IPC. Les étudiants sélectionnent et implémentent le mécanisme d'IPC approprié pour une contrainte de conception donnée.
Chapitre 5MasquerCacher les détailsVoir les détailsGestion de la mémoire et mémoire virtuelle
Gestion de la mémoire et mémoire virtuelle
Leçon 1 • Profilage mémoire et détection de fuites
Applique Valgrind Memcheck, AddressSanitizer et les cartes /proc pour trouver les fuites et la corruption. Les étudiants produisent des profils mémoire propres pour un code de qualité production.
Leçon 2 • Architecture de la mémoire virtuelle
Explique les tables de pages, le fonctionnement du TLB et le matériel de traduction d'adresses. Fournit la base pour comprendre mmap, les pages géantes et les effets NUMA.
Leçon 3 • Pages géantes et sensibilisation NUMA
Présente les pages géantes transparentes, l'allocation explicite de pages géantes et la topologie NUMA. Les étudiants ajustent le placement de la mémoire pour les charges de travail système sensibles à la latence.
Leçon 4 • Conception d'allocateur mémoire personnalisé
Construit un allocateur de type slab en utilisant sbrk et mmap comme magasins de support. Renforce la compréhension de la fragmentation, du coalescement et des métadonnées d'allocateur.
Leçon 5 • Mappage mémoire avec mmap
Couvre les mappages anonymes et adossés à des fichiers, les drapeaux de protection, et MAP_SHARED vs. MAP_PRIVATE. Les étudiants utilisent mmap pour l'E/S sans copie et l'IPC par mémoire partagée.
Chapitre 6MasquerCacher les détailsVoir les détailsSystèmes de fichiers et sous-systèmes d'E/S
Systèmes de fichiers et sous-systèmes d'E/S
Leçon 1 • E/S avancées : dispersion-rassemblement et asynchrone
Présente readv/writev, io_uring et epoll pour les E/S haute performance. Permet aux étudiants de construire des serveurs pilotés par événements avec une surcharge minimale d'appels système.
Leçon 2 • Réglage des performances de stockage
Applique fio, iostat et blktrace pour mesurer et améliorer le débit et la latence des E/S. Les étudiants identifient les goulots d'étranglement dans la pile de stockage, de l'application au périphérique.
Leçon 3 • E/S tamponnées vs. non tamponnées
Contraste le tamponnage stdio avec les E/S par appel système direct et explique quand chacun est approprié. Les étudiants mesurent l'impact sur les performances des stratégies de tamponnage sur le débit.
Leçon 4 • API d'E/S de fichiers POSIX
Couvre open, read, write, lseek et close avec tous les drapeaux et modes pertinents. Établit le modèle de descripteur de fichier comme abstraction d'E/S universelle dans POSIX.
Leçon 5 • Mécanismes internes du système de fichiers
Examine les inodes, les entrées de répertoire, les extents et la journalisation dans les systèmes de fichiers modernes. Les étudiants comprennent comment les structures sur disque affectent la durabilité et la récupération après panne.
Chapitre 7MasquerCacher les détailsVoir les détailsInterfaces du noyau et pilotes de périphérique
Interfaces du noyau et pilotes de périphérique
Leçon 1 • Développement de module noyau
Couvre l'initialisation/la sortie du module, le système Kbuild et les exigences de style de codage du noyau. Les étudiants compilent, chargent et déchargent un module noyau minimal en toute sécurité.
Leçon 2 • Mémoire du noyau et DMA
Explique kmalloc, vmalloc et l'allocation cohérente DMA pour une utilisation par les pilotes. Les étudiants choisissent l'API d'allocation correcte en fonction de la taille, de l'alignement et des exigences DMA.
Leçon 3 • Bases du pilote de périphérique à caractères
Implémente les callbacks file_operations : open, release, read, write et ioctl. Les étudiants exposent une source de données du noyau à l'espace utilisateur via un fichier de périphérique.
Leçon 4 • Mécanismes internes des appels système
Trace un appel système de l'espace utilisateur à travers la table des appels système jusqu'au gestionnaire du noyau. Les étudiants comprennent la commutation de contexte, le passage d'arguments et les chemins de retour.
Leçon 5 • Gestion des interruptions et moitiés inférieures
Enregistre les gestionnaires d'IRQ, implémente les tasklets et les workqueues pour le travail différé. Les étudiants écrivent du code pilote compatible avec les interruptions qui répond aux contraintes de latence en temps réel.
Chapitre 8MasquerCacher les détailsVoir les détailsAnalyse et optimisation des performances
Analyse et optimisation des performances
Leçon 1 • Techniques d'optimisation du cache
Applique la disposition des structures de données, le préchargement et le tuilage de boucles pour améliorer l'utilisation du cache. Les étudiants mesurent les taux d'échec de cache avant et après chaque transformation.
Leçon 2 • Méthodologie de test de performance
Couvre la conception de microbenchmarks, l'analyse statistique et l'évitement des pièges courants. Les étudiants produisent des résultats de test de performance reproductibles qui résistent à l'examen par les pairs.
Leçon 3 • Optimisation du compilateur et optimisation au moment de l'édition de liens
Explore les niveaux -O, PGO, LTO et les drapeaux d'auto-vectorisation. Les étudiants vérifient que les transformations du compilateur produisent des binaires corrects et plus rapides.
Leçon 4 • Contention de verrou et extensibilité
Mesure la contention de verrou avec perf lock et applique des techniques sans verrouillage lorsque c'est approprié. Les étudiants reconçoivent la synchronisation pour passer à l'échelle sur de nombreux cœurs de CPU.
Leçon 5 • Compteurs de performance CPU et profilage
Utilise perf stat, perf record et les flame graphs pour identifier les goulots d'étranglement CPU. Les étudiants corrèlent les données des compteurs matériels avec le code source pour guider l'optimisation.
Votre certificat valide de réussite
Ce cours est pour vous :
Ingénieur backend : souhaite cesser de considérer le système d'exploitation comme une boîte noire.
Étudiant en informatique : prêt à appliquer la théorie à du code réel au niveau du noyau.
Développeur de firmware : a besoin de bases solides en Linux et POSIX pour le travail embarqué.
Ingénieur DevOps : cherche à approfondir sa compréhension des mécanismes internes des conteneurs et de l'ordonnanceur.
Chercheur en sécurité : doit comprendre de première main la disposition de la mémoire et les limites de privilèges.
Personne en reconversion professionnelle : passe de rôles d'écriture de scripts à l'ingénierie d'infrastructure bas niveau.
Ce que disent nos élèves
Vos cours sont parfaits. J'ai acheté le forfait d'un an et j'ai enfin l'opportunité de suivre divers sujets qui m'intéressent sans avoir besoin de changer de plateforme... je vous remercie pour tout ce que vous faites, je vous ai déjà recommandés à d'autres personnes...

J'aime la façon dont les leçons vont droit au but et comment je peux changer de chapitres et passer le contenu dont je n'ai pas besoin.

J'aime le contenu et la façon dont les vidéos sont présentées et transcrites, ce qui accélère le processus !

La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.

Formations principales
FAQ
Qui est Dedika ?
Le certificat est-il valable au Maroc ?
Les cours sont-ils gratuits ?
Quelle est la charge de travail du cours ?
Comment sont les cours ?
Comment fonctionnent les cours ?
Quelle est la durée des cours ?
Quel est le coût ou le prix des cours ?
Qu'est-ce qu'un cours EAD ou en ligne et comment ça marche ?
Cours PDF




















