R3.05 Programmation Système¶
Déroulé des séances :
- Séance 1 :
Présentation : Introduction à la programmation système
Présentation : Bases de C (1ère partie des diapos)
Exercices : Partie 1 - Bases de C
- Séance 2 :
Présentation : Bases de C (2ème partie des diapos)
Exercices : Partie 1 - Bases de C
- Séance 3 :
Présentation : Fichiers
Exercices : Partie 2 - Fichiers
- Séance 4 :
Présentation : Mémoire
Exercice : Partie 3 - Mémoire
- Séance 5 :
Présentation : Processus
Exercices : Partie 4 - Processus
- Séance 6 :
Exercices : Partie 4 - Processus
- Séance 7 :
Présentation : Threads
Exercices : Partie 5 - Threads
- Séance 8 :
Exercices : Partie 5 - Threads
- Séance 9 :
Présentation : Sockets
Exercices : Partie 6 - Sockets
- Séance 10 :
Exercices : Partie 6 - Sockets
Contrôle
Descriptif détaillé du programme national¶
Objectif
L’objectif de cette ressource est de comprendre la structure d’une application client-serveur et de comprendre les mécanismes bas niveaux, mis en œuvre dans une application multitâches. Cette ressource permettra de découvrir le développement d’applications multi-processus, de comprendre et de traiter les problèmes de synchronisation et d’utiliser des outils de communication internes aux processus , mais aussi externes, via les interface de programmation ( API ) de transport.
Savoirs de référence étudiés
Fonctionnement du système (par ex. : pagination, mémoire virtuelle, systèmes de fichiers…)
Gestion de processus (par ex. : ordonnancement, synchronisation, threads…)
Programmation client-serveur (par ex. : inter-process communication (IPC), interface socket, protocoles applicatifs…)
Les différents savoirs de référence pourront être approfondis
Cours
- Partie 0 - Introduction
- Partie 1 - Bases de C
- Partie 2 - Fichiers
- Partie 3 - Mémoire
- Partie 4 - Processus
- Qu’est-ce qu’un processus ?
- Cycle de vie d’un processus
- Création de processus :
fork - Synchronisation parent / enfant :
wait - Remplacement d’un processus :
exec - Zombies et orphelins
- Priorités et ordonnanceur
- Outils d’observation
- Résumé pratique : modèle
fork→exec→wait - Communication inter-processus
- Partie 5 - Threads
- Partie 6 - Sockets
- Introduction
- Modèle OSI et pile TCP/IP
- Principe d’un échange d’une communication en mode connecté (TCP)
- Principe d’un échange d’une communication en mode non connecté (UDP)
- Création d’un socket
- Définition des interfaces avec
bind - Attendre des connexions avec
listen - Accepter des connexions avec
accept - Connexion à un socket avec
connect - Envoyer et recevoir des données avec
send/recvousendto/recvfrom - Fermeture d’une socket
- Sockets locales (AF_UNIX)
Exercices
- Consignes
- Partie 1 - Bases de C
- Partie 2 - Fichiers
- p2e1 — Métadonnées et types (shell)
- p2e2 — Liens physiques et symboliques (shell)
- p2e3 — I/O fichier (libc/stdio)
- p2e4 — I/O texte POSIX (bas niveau)
- p2e5 — I/O binaire (libc)
- p2e6 — Renommer un fichier (libc)
- p2e7 — Lecture partielle (seek POSIX)
- p2e8 — cat (libC)
- p2e9 —
head -n(libC) - p2e10 — Créer une arborescence + liens
- p2e11 — Copier un fichier (POSIX)
- p2e12 — Éviter les accès concurrents
- Partie 3 - Mémoire
- Partie 4 - Processus
- p4e1 - Premier fork
- p4e2 - Copy-on-Write et isolation mémoire
- p4e3 - Fork + Exec simple
- p4e4 - Intercepter SIGINT (Ctrl+C)
- p4e5 - Pipe unidirectionnel parent→enfant
- p4e6 - Ping-pong bidirectionnel avec deux pipes
- p4e7 - FIFO (tube nommé) - Writer & Reader
- p4e8 - Mini-shell avec commandes simples et background
- Partie 5 - Threads
- Partie 6 - Sockets