Choisissez votre langue
Formation programmation système
Plus de 2 millions d'apprenants dans le monde

Formation programmation système

Passez de l'écriture de code applicatif à la maîtrise de l'ensemble de la pile système — interfaces du 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èmes seniors des autres. Chaque concept est ancré dans des outils réels, du code réel et des scénarios de production réels.

Dedika pour entreprises

Ce que vous allez apprendre:

Vous allez construire un modèle mental complet de la manière dont le logiciel interagit avec le matériel et le noyau Linux, en commençant par l'architecture du CPU et la disposition de la mémoire des processus. Vous maîtriserez le C pour le travail système, y compris la gestion manuelle de la mémoire, l'arithmétique des pointeurs et les modèles de codage défensif. Le cours couvre l'assembleur x86-64, le débogage de 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 de fichiers haute performance et le développement de modules noyau. Le renforcement de la sécurité, les mécanismes internes de la conteneurisation, l'ordonnancement en temps réel et le profilage des performances avec perf complètent le programme de formation.

Comment vous étudiez de façon pratique Formation programmation système

Comment vous pratiquez Formation 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.

Cliquez ici

Contenu du cours

8 Chapitres • 40 LeçonsDurée entre 4 et 360 heures (vous décidez)

Chapitre 1Voir les détails

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, éditer des liens 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 d'un processus

    Examine les segments de la pile, du tas, du BSS, des données et du 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 • Principes essentiels de l'architecture informatique

    Couvre les registres du CPU, les cycles d'instructions et la hiérarchie de la mémoire. Établit le vocabulaire matériel nécessaire pour tous les sujets système ultérieurs.

  • 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 2Voir les détails

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 manière dont les types C correspondent aux octets réels en mémoire.

  • Leçon 2 • Gestion des erreurs et codage défensif

    Présente errno, les conventions de code de retour et les stratégies d'assertion en C. Développe des habitudes qui empêchent les échecs silencieux 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 3Voir les détails

Langage assembleur et débogage de bas niveau

  • Leçon 1 • Assembleur inline en C

    Enseigne la syntaxe d'assembleur inline étendue de GCC, les contraintes et les listes de clobber. 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 mouvement 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 x86-64 et conventions d'appel

    Mappe les registres à usage général, de segment et SIMD à leurs rôles. Établit le contrat ABI que le code C et assembleur doit honorer 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 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 assembleur : points d'arrêt, points de surveillance et inspection des registres. Les étudiants diagnostiquent les plantages et la corruption de la mémoire en lisant l'état machine brut.

Chapitre 4Voir les détails

Gestion des processus et des threads

  • Leçon 1 • Signaux et événements asynchrones

    Explique la livraison des signaux, le masquage et l'enregistrement des gestionnaires avec sigaction. Prépare les étudiants à écrire du code sûr pour 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 des processus de la création à la terminaison.

  • Leçon 3 • Fondamentaux des threads POSIX

    Présente la création, la jointure et le détachement de pthreads ainsi que les attributs de thread. Établit le modèle de threading utilisé dans tous les sujets de concurrence ultérieurs.

  • Leçon 4 • Primitives de synchronisation

    Couvre les mutex, les variables de condition, les sémaphores et les verrous de lecture-écriture. Les étudiants appliquent chaque primitive pour éliminer les courses aux données dans les programmes à mémoire partagée.

  • Leçon 5 • Communication inter-processus (IPC)

    Examine les pipes, 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 5Voir les détails

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 grandes pages et les effets NUMA.

  • Leçon 3 • Grandes pages et sensibilisation NUMA

    Présente les grandes pages transparentes, l'allocation explicite de grandes pages 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'un 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 coalescing et des métadonnées de l'allocateur.

  • Leçon 5 • Mappage mémoire avec mmap

    Couvre les mappages anonymes et adossés à des fichiers, les indicateurs de protection et MAP_SHARED vs. MAP_PRIVATE. Les étudiants utilisent mmap pour les E/S sans copie et l'IPC par mémoire partagée.

Chapitre 6Voir les détails

Systèmes de fichiers et sous-systèmes d'E/S

  • Leçon 1 • E/S avancées : dispersion-rassemblement et asynchrones

    Présente readv/writev, io_uring et epoll pour les E/S hautes performances. Permet aux étudiants de construire des serveurs événementiels avec une surcharge d'appels système minimale.

  • 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

    Oppose la mise en tampon stdio aux E/S par appel système direct et explique quand chacune est appropriée. Les étudiants mesurent l'impact sur les performances des stratégies de mise en tampon sur le débit.

  • Leçon 4 • API d'E/S de fichier POSIX

    Couvre open, read, write, lseek et close avec tous les indicateurs 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 des systèmes de fichiers

    Examine les inodes, les entrées de répertoire, les étendues 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 7Voir les détails

Interfaces du noyau et pilotes de périphériques

  • Leçon 1 • Développement de modules du noyau

    Couvre les fonctions d'initialisation/sortie des modules, le système Kbuild et les exigences de style de codage du noyau. Les étudiants compilent, chargent et déchargent en toute sécurité un module minimal du noyau.

  • Leçon 2 • Mémoire du noyau et DMA

    Explique kmalloc, vmalloc et l'allocation cohérente DMA pour une utilisation dans 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 de type caractère

    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 le changement 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 de pilote sûr pour les interruptions qui respecte les contraintes de latence en temps réel.

Chapitre 8Voir les détails

Analyse des performances et optimisation

  • Leçon 1 • Techniques d'optimisation du cache

    Applique la disposition des structures de données, le préchargement et le bouclage par tuiles 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 d'évaluation comparative

    Couvre la conception de microbenchmarks, l'analyse statistique et l'évitement des pièges courants. Les étudiants produisent des résultats d'évaluation comparative 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 indicateurs 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 scalabilité

    Mesure la contention de verrou avec perf lock et applique des techniques sans verrouillage le cas échéant. 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 points chauds du CPU. Les étudiants corrèlent les données des compteurs matériels avec le code source pour guider l'optimisation.

Certification

Votre certificat valide de réussite

Ce cours est pour vous :

  • Ingénieur back-end : souhaite arrêter de traiter 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 une compréhension plus approfondie 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 de script à l'ingénierie d'infrastructure bas niveau.

Ce que disent nos apprenants

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...
Giulio Carlo
Giulio CarloÉtudiant en Marketing Digital
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.
Mariana Ferres
Mariana FerresÉtudiante en Photographie
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 !
Luciana Alvarenga
Luciana AlvarengaÉtudiante en Design d'Ongles
La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.
André Felipe
André FelipeÉtudiant en Ingénierie de Prompt

Formations principales

FAQ

Qui est Dedika ?

Le certificat est-il valable au Cameroun ?

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