Prenez contact avec nous

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

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires