Prenez contact avec nous

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

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires