Programmation Système
Le cours de programmation système porte sur UNIX et l'interface POSIX. Il part de l'architecture du noyau et du système de gestion de fichiers (inodes, buffer cache, bibliothèque standard, appels système d'entrées-sorties), passe aux processus et à la gestion de la mémoire, réelle puis virtuelle, et aborde enfin la communication et la synchronisation : tubes, signaux, verrous de fichiers, interblocages, multiplexage des entrées-sorties et threads POSIX.
Notes de cours
Cours14 pages
- IntroductionRôle d'un système d'exploitation, architecture en couches d'UNIX et architecture du noyau.
- Système de gestion de fichiersConcepts du système de gestion de fichiers UNIX : fichiers ordinaires et spéciaux, arborescence, inodes, organisation disque System V et allocation des blocs.
- Buffer cacheRôle, structures de données et limites du buffer cache du noyau UNIX pour réduire les accès disque.
- Bibliothèque standardLes flux de la bibliothèque standard C (FILE *, stdin, stdout, stderr) et leur mise en tampon.
- Appels système d'entrées-sortiesLes appels système d'entrées-sorties de bas niveau : open, creat, read, write, lseek, dup, dup2 et close.
- ProcessusLe processus UNIX : création par fork, recouvrement par execve, zone u, table des processus, contexte, commutation de mot d'état et interruptions.
- Gestion de la mémoireGestion de la mémoire centrale : allocation contiguë, registres barrière et de base, swap et algorithmes de placement (first fit, best fit, worst fit).
- Mémoire virtuelleOverlays, pagination à la demande, coût des défauts de page, remplacement de pages, copie sur écriture, mmap et madvise.
- Tubes et tubes nommésCommunication par tubes UNIX : pipe, sémantique de read et write, atomicité (PIPE_BUF), SIGPIPE, interblocages et tubes nommés (FIFO).
- SignauxLes signaux UNIX : envoi avec kill, gestion avec signal et sigaction, ensembles et masques de signaux, attente avec sigsuspend.
- Verrous de fichiersVerrous de fichiers POSIX : portée, types partagé et exclusif, modes consultatif et impératif, manipulation avec fcntl et la structure flock.
- Algorithmes distribués et interblocagesAccès concurrents, exclusion mutuelle, conditions de Coffman et graphes d'allocation de ressources pour l'étude des interblocages.
- Multiplexage des entrées-sortiesAttente simultanée sur plusieurs descripteurs : entrées-sorties non bloquantes, SIGIO, select, poll et epoll.
- Threads POSIXThreads POSIX (pthreads) : création, terminaison, join et detach, mutex, variables de condition, ordonnancement, données spécifiques et interactions avec fork, exec et les signaux.
Ressources
Supports de l'enseignant1 document