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 insignes numériques
- Distributions Linux
- Plateformes
- Préparation de votre système
- Utilisation et téléchargement d'une machine virtuelle
- Les changements dans Linux
Préalables
- Procédures
- Normes et LSB
Comment contribuer aux projets open source **
- Aperçu des bonnes pratiques de contribution
- Rester proche du noyau principal pour la sécurité et la qualité
- Étudier et comprendre l'ADN du projet
- Identifier le problème que vous souhaitez résoudre
- Identifier les mainteneurs, leurs flux de travail et leurs méthodes
- Obtenir des avis précoces et travailler en transparence
- Contribuer par petites étapes, plutôt que par de gros blocs de code
- Laisser son ego à la porte : ne pas être trop susceptible
- Faire preuve de patience, développer des relations à long terme et être utile
Compilateurs
- GCC
- Autres compilateurs
- Options principales de gcc
- Préprocesseur
- Environnements de développement intégrés (IDE)
- Laboratoires
Bibliothèques
- Bibliothèques statiques
- Bibliothèques partagées
- Liaison avec les bibliothèques
- Chargeur de liaison dynamique
- Laboratoires
Make
- Utilisation de make et des fichiers Makefile
- Construction de grands projets
- Règles plus complexes
- Règles intégrées
- Laboratoires
Contrôle des sources
- Contrôle des sources
- RCS et CVS
- Subversion
- git
- Laboratoires
Débogage et cœurs de processus (core dumps)
- gdb
- Qu'est-ce qu'un fichier de cœurs de processus ?
- Génération de cœurs de processus
- Examen des cœurs de processus
- Laboratoires
Outils de débogage
- Obtenir l'heure
- Profilage et performance
- valgrind
- Laboratoires
Appels système
- Appels système vs. fonctions de bibliothèque
- Comment sont effectués les appels système
- Valeurs de retour et numéros d'erreur
- Laboratoires
Gestion et allocation de la mémoire
- Gestion de la mémoire
- Allocation dynamique
- Optimisation de malloc()
- Verrouillage des pages
- Laboratoires
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 avec journalisation
- Le système de fichiers ext4
- Laboratoires
E/I des fichiers
- E/I des fichiers UNIX
- Ouverture et fermeture
- Lecture, écriture et déplacement du curseur
- E/I vectoriel et positionnel
- Bibliothèque E/I standard
- Prise en charge des fichiers volumineux (LFS)
- Laboratoires
Opérations avancées sur les fichiers
- Fonctions stat
- Fonctions de répertoires
- inotify
- Mappage en mémoire
- flock() et fcntl()
- Création de fichiers temporaires
- Autres appels système
- Laboratoires
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
- Laboratoires
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()
- Terminaison
- Constructeurs et destructeurs
- Attente
- Processus daemon
- Laboratoires
Tuyaux (Pipes) et FIFO
- Tuyaux et communication inter-processus
- popen() et pclose()
- pipe()
- Tuyaux nommés (FIFO)
- splice(), vmsplice() et tee()
- Laboratoires
E/I asynchrone**
- Qu'est-ce que l'E/I asynchrone ?
- L'API POSIX d'E/I asynchrone
- Implémentation sous Linux
- Laboratoires
Signaux I
- Qu'est-ce qu'un signal ?
- Signaux disponibles
- Dispatching des signaux
- Alarmes, pause et sommeil
- Configuration d'un gestionnaire de signaux
- Ensembles de signaux
- sigaction()
- Laboratoires
Signaux II
- Réentrance et gestionnaires de signaux
- Sauts et retours non locaux
- siginfo et sigqueue()
- Signaux temps réel
- Laboratoires
Threads POSIX I
- Multithreading sous Linux
- Structure de base du programme
- Création et destruction de threads
- Signaux et threads
- Forking vs. Threading
- Laboratoires
Threads POSIX II
- Interblocages et conditions de concurrence
- Opérations Mutex
- Sémaphores
- Futexes
- Opérations conditionnelles
- Laboratoires
Réseau et sockets
- Couches réseau
- Qu'est-ce qu'une socket ?
- Sockets de flux
- Sockets de datagrammes
- Sockets bruts
- Ordre des octets
- Laboratoires
Sockets Adresses et hôtes
- Structures d'adresse de socket
- Conversion d'adresses IP
- Informations sur l'hôte
- Laboratoires
Sockets Ports et protocoles
- Informations sur les ports de service
- Informations sur les protocoles
- Laboratoires
Sockets Clients
- Séquence client de base
- socket()
- connect()
- close() et shutdown()
- Client UNIX
- Client Internet
- Laboratoires
Sockets Serveurs
- Séquence serveur de base
- bind()
- listen()
- accept()
- Serveur UNIX
- Serveur Internet
- Laboratoires
Sockets Opérations d'entrée/sortie
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratoires
Sockets Options
- Obtention et définition des options de socket
- fcntl()
- ioctl()
- getsockopt() et setsockopt()
- Laboratoires
Sockets Netlink**
- Qu'est-ce qu'une socket Netlink ?
- Ouverture d'une socket Netlink
- Messages Netlink
- Laboratoires
Sockets Multiplexage et serveurs concurrents
- E/I de socket multiplexée et asynchrone
- select()
- poll()
- pselect() et ppoll()
- epoll
- E/I pilotée par signaux et asynchrone
- Serveurs concurrents
- Laboratoires
Communication inter-processus
- Méthodes de IPC
- IPC POSIX
- IPC System V**
- Laboratoires
Mémoire partagée
- Qu'est-ce que la mémoire partagée ?
- Mémoire partagée POSIX
- Mémoire partagée System V**
- Laboratoires
Sémaphores
- Qu'est-ce qu'un sémaphore ?
- Sémaphores POSIX
- Sémaphores System V**
- Laboratoires
Files de messages
- Qu'est-ce qu'une file de messages ?
- Files de messages POSIX
- Files de messages System V**
- Laboratoires
Pré requis
Ce cours s'adresse aux développeurs expérimentés. Les participants doivent maîtriser la programmation en C et être familiarisés avec les utilitaires de base de Linux et les éditeurs de texte.
Audience cible
Ce cours s'adresse aux développeurs expérimentés. Les participants doivent maîtriser la programmation en C et être familiarisés avec les utilitaires de base de Linux et les éditeurs de texte.
Niveau d'expérience : Intermédiaire
28 Heures