Merci d'avoir envoyé votre demande ! Un membre de notre équipe vous contactera sous peu.
Merci d'avoir envoyé votre réservation ! Un membre de notre équipe vous contactera sous peu.
Plan du cours
Introduction
- Objectifs
- Qui êtes-vous
- La Fondation Linux
- Formation de la Fondation Linux
- Programmes de certification et badging numérique
- Distributions Linux
- Plateformes
- Préparation de votre système
- Utilisation et téléchargement d'une machine virtuelle
- Changements dans Linux
Prérequis techniques
- Procédures
- Normes et LSB (Linux Standards Base)
Comment travailler dans les projets OSS **
- Aperçu de la contribution appropriée
- Restez proche du noyau principal pour la sécurité et la qualité
- Étudiez et comprenez l'ADN du projet
- Identifiez le problème que vous souhaitez résoudre
- Identifiez les mainteneurs, leurs flux de travail et méthodes
- Obtenez un retour d'information tôt et travaillez en transparence
- Contribuez avec des petites modifications incrémentales, pas de gros blocs de code
- Mettez votre ego de côté : ne soyez pas susceptible
- Soyez patient, développez des relations à long terme, soyez utile
Compilateurs
- GCC
- Autres compilateurs
- Options principales de gcc
- Préprocesseur
- Environnements de développement intégrés (IDE)
- Travaux pratiques
Bibliothèques
- Bibliothèques statiques
- Bibliothèques partagées
- Liaison aux bibliothèques
- Chargeur de liaison dynamique
- Travaux pratiques
Make
- Utilisation de make et des fichiers Makefile
- Construction de grands projets
- Règles plus complexes
- Règles intégrées
- Travaux pratiques
Contrôle de source
- Contrôle de source
- RCS et CVS
- Subversion
- git
- Travaux pratiques
Débogage et cœurs de processus (core dumps)
- gdb
- Qu'est-ce qu'un fichier core dump ?
- Génération de cœurs de processus
- Examen des cœurs de processus
- Travaux pratiques
Outils de débogage
- Obtenir l'heure
- Profilage et performance
- valgrind
- Travaux pratiques
Appels système
- Appels système vs. fonctions de bibliothèque
- Comment les appels système sont effectués
- Valeurs de retour et numéros d'erreur
- Travaux pratiques
Gestion et allocation de mémoire
- Gestion de la mémoire
- Allocation dynamique
- Optimisation de malloc()
- Verrouillage des pages
- Travaux pratiques
Fichiers et systèmes de fichiers sous Linux **
- Fichiers, répertoires et périphériques
- Le système de fichiers virtuel
- Le système de fichiers ext2/ext3
- Les systèmes de fichiers journalisés
- Le système de fichiers ext4
- Travaux pratiques
E/I sur fichiers
- E/I sur fichiers UNIX
- Ouverture et fermeture
- Lecture, écriture et déplacement
- E/I positionnel et vectoriel
- Bibliothèque E/I standard
- Support des gros fichiers (LFS)
- Travaux pratiques
Opérations avancées sur les fichiers
- Fonctions stat
- Fonctions de répertoire
- inotify
- Mappage en mémoire
- flock() et fcntl()
- Création de fichiers temporaires
- Autres appels système
- Travaux pratiques
Processus I
- Qu'est-ce qu'un processus ?
- Limites des processus
- Groupes de processus
- Le système de fichiers proc
- Méthodes de communication inter-processus
- Travaux pratiques
Processus II
- Utilisation de system() pour créer un processus
- Utilisation de fork() pour créer un processus
- Utilisation de exec() pour créer un processus
- Utilisation de clone()
- Sortie
- Constructeurs et destructeurs
- Attente
- Processus daemon
- Travaux pratiques
Tubes et FIFOs
- Tubes et communication inter-processus
- popen() et pclose()
- pipe()
- Tubes nommés (FIFOs)
- splice(), vmsplice() et tee()
- Travaux pratiques
E/I asynchrone **
- Qu'est-ce que l'E/I asynchrone ?
- L'API POSIX E/I asynchrone
- Implémentation Linux
- Travaux pratiques
Signaux I
- Qu'est-ce qu'un signal ?
- Signaux disponibles
- Traitement des signaux
- Alarmes, pause et sommeil
- Configuration d'un gestionnaire de signaux
- Ensembles de signaux
- sigaction()
- Travaux pratiques
Signaux II
- Réentrance et gestionnaires de signaux
- Sauts et retours non locaux
- siginfo et sigqueue()
- Signaux temps réel
- Travaux pratiques
POSIX Threads I
- Multitâthread sous Linux
- Structure de programme de base
- Création et destruction de threads
- Signaux et threads
- Forking vs. Threading
- Travaux pratiques
POSIX Threads II
- Interblocages et conditions de course
- Opérations mutex
- Sémaphores
- Futexes
- Opérations conditionnelles
- Travaux pratiques
Réseau et sockets
- Couches réseau
- Qu'est-ce qu'une socket ?
- Sockets de type flux (stream)
- Sockets de type datagramme
- Sockets bruts
- Ordre des octets
- Travaux pratiques
Adresses et hôtes de sockets
- Structures d'adresse de socket
- Conversion d'adresses IP
- Informations sur les hôtes
- Travaux pratiques
Ports et protocoles de sockets
- Informations sur les ports de service
- Informations sur les protocoles
- Travaux pratiques
Sockets clients
- Séquence client de base
- socket()
- connect()
- close() et shutdown()
- Client UNIX
- Client Internet
- Travaux pratiques
Serveurs de type socket
- Séquence serveur de base
- bind()
- listen()
- accept()
- Serveur UNIX
- Serveur Internet
- Travaux pratiques
Opérations d'E/I sur les sockets
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Travaux pratiques
Options de socket
- Obtention et réglage des options de socket
- fcntl()
- ioctl()
- getsockopt() et setsockopt()
- Travaux pratiques
Sockets Netlink **
- Qu'est-ce qu'une socket Netlink ?
- Ouverture d'une socket Netlink
- Messages Netlink
- Travaux pratiques
Multiplexage et serveurs concurrents de sockets
- E/I sur socket multiplexée et asynchrone
- select()
- poll()
- pselect() et ppoll()
- epoll
- E/I pilotée par signal et asynchrone
- Serveurs concurrents
- Travaux pratiques
Communication inter-processus (IPC)
- Méthodes d'IPC
- IPC POSIX
- IPC System V **
- Travaux pratiques
Mémoire partagée
- Qu'est-ce que la mémoire partagée ?
- Mémoire partagée POSIX
- Mémoire partagée System V **
- Travaux pratiques
Sémaphores
- Qu'est-ce qu'un sémaphore ?
- Sémaphores POSIX
- Sémaphores System V **
- Travaux pratiques
Files de messages
- Qu'est-ce qu'une file de messages ?
- Files de messages POSIX
- Files de messages System V **
- Travaux pratiques
Pré requis
Ce cours s'adresse aux développeurs expérimentés. Les participants doivent maîtriser la programmation en C et être familiers avec les utilitaires Linux de base et les éditeurs de texte.
Public cible
Ce cours s'adresse aux développeurs expérimentés. Les participants doivent maîtriser la programmation en C et être familiers avec les utilitaires Linux de base et les éditeurs de texte.
Niveau d'expérience : Intermédiaire
28 Heures