Programmation système & réseau
Six cours pour traverser les appels système Unix, les signaux et sémaphores, les tubes (anonymes + nommés), les threads POSIX, les sockets TCP/UDP et les files de messages.
Tout le programme est à connaître. L'examen ressemblera à celui de l'année dernière — voir la session normale 2024-2025. Composition 50% TP.
i. Les six cours
Chaque cours a son encre signature. Clique pour entrer.
Introduction · appels système
Système d'exploitation, machine étendue, appels système, gestion de fichiers et de processus.
Signaux & sémaphores
Communication inter-processus, signaux Unix, kill / signal / sigaction, sémaphores POSIX.4.
Tubes (pipes)
Tubes anonymes, redirection (dup/dup2), tubes nommés (FIFO), synchronisation père-fils.
Threads POSIX
pthread_create / join / exit, mutex, sémaphores, partage mémoire, multithread.
Sockets TCP / UDP
API socket, sockaddr_in, htons/ntohl, bind/listen/accept/connect, client-serveur.
Files de messages
Boîtes aux lettres, msgget / msgsnd / msgrcv, ftok, IPC Système V vs POSIX MQ.
ii. Annales
4 examens des années précédentes avec PDF intégré et correction commentée.
Examen — session normale
Sujet le plus représentatif de cette année. Correction commentée et liens vers les cours.
Examen — version générale
Le plus dense des 4 sujets, couvre largement le programme.
Examen — variante 2023
Deuxième session normale 2022-2023, format ING2 GSI/GIA.
Examen — rattrapage 2022-2023
Sujet de session de rattrapage.
iii. Pages compagnons
🔮 Prédiction d'examen
Modalité : 50 % partiel écrit + 50 % TP (TP déjà acquis). Annonce du prof confirmée par l'audit : 90 % de stabilité 2022 → 2024.
Variante à anticiper :
- Examen général (rattrapage) : 4 exos pratiques pures, distribution 6-4-4-6, 100 % code C
- Session normale : 1 bloc questions de cours (5 pts) + 3 exos pratiques
accept() + fork() ou pthread) est non-négociable.
| Cours | Forme probable | Justification |
|---|---|---|
| Cours 1 — Introduction (processus, fork, exec) | Question de cours + petit code à écrire | Concepts fondateurs : différence processus/thread, séquence fork() → exec(). Une question courte attendue + un mini-exo qui trace les processus issus de fork(). |
| Cours 2 — Signaux & sémaphores | Code à écrire (gestionnaire de signal) + schéma (interblocage / producteur-consommateur) | Interruptions asynchrones (SIGINT, SIGUSR1/2), handlers via signal()/sigaction(), primitives P()/V() POSIX. Format type : « écris un handler qui réagit à SIGUSR1 » ou « identifie l'interblocage / écris le code thread-safe avec sémaphore ». Confirmé dans les 4 annales. |
| Cours 3 — Tubes (pipes) | Code à écrire (pipe + fork) ou à analyser | Sketch classique : père-fils communiquant via pipe(), ou redirection dup2(). Souvent demandé en complément du Cours 1 (fork). |
| Cours 4 — Threads (pthread) | Code à analyser (race condition) | Le format « voici un code, trouvez le bug de concurrence » est classique. Souvent enchaîné avec le Cours 2 (correction via mutex / sémaphore). |
| Cours 5 — Sockets TCP / UDP | Code à écrire (serveur ou client TCP) — multi-clients | Exo signature du module : reproduire la séquence socket() → bind() → listen() → accept() → recv() côté serveur, ou socket() → connect() → send() côté client. Le format multi-clients (fork() ou pthread après accept()) est présent dans les annales 2024-2025. Confirmé 4/4 annales. |
| Cours 6 — Files de messages | Question de cours ou sous-question | IPC Système V (msgget, msgsnd, msgrcv) et POSIX temps réel. Chapitre plus marginal — apparaît en sous-question. À ne pas négliger pour les 1-2 points faciles. |
- 5-7 pts · Sockets (Cours 5) — exo de programmation principal multi-clients
- 3-5 pts · Fork / pipes (Cours 1 + 3) — trace ou code court
- 3-5 pts · Threads + signaux/sémaphores (Cours 4 + 2) — analyse + correction
- 2-4 pts · Questions de cours transversales (sémantique IPC, files de messages)
💡 Stratégie : refaire les 4 annales (2022-2023 × 2 + 2024-2025 × 2). Les sujets se répètent fortement — quasi-prévisible.