#Architecture & systèmes
Ce cours met des images mentales derrière les mots “CPU”, “mémoire”, “E/S”, “processus”. L’idée: comprendre juste assez du matériel pour expliquer des phénomènes invisibles (latences de cache, blocages d’E/S) et prendre de meilleures décisions côté logiciel.
Contexte pédagogique: ce module s’inscrit dans les attentes de L1 de la Licence d’Informatique (Valrose — UCA) pour asseoir des bases solides utilisables ensuite en programmation, systèmes et réseaux.
#CPU et mémoire: pourquoi c’est rapide… et parfois non
Le CPU enchaîne des instructions et lit des données depuis la mémoire. Comme la mémoire principale est trop lente, des caches (L1/L2/L3) gardent au chaud ce qui vient d’être utilisé. L’architecture de Von Neumann met code et données dans le même espace: simple, mais cela demande de la prudence (prédiction de branchement, invalidation de cache) pour garder le pipeline bien rempli.
#Entrées/sorties: parler avec le monde
Disques et réseaux traversent des bus (PCIe). Les interruptions réveillent le CPU quand “quelque chose s’est passé”. Le DMA autorise les périphériques à déposer des blocs en mémoire sans monopoliser le CPU. D’où un conseil pratique: lisez/écrivez en blocs raisonnables, et tamponnez ce qui peut l’être.
#L’OS comme traducteur haut niveau
Le noyau expose des abstractions: processus, fichiers, sockets. Il planifie le CPU, gère la mémoire (pagination, TLB), arbitre les E/S et isole les applis. Vous entrez dans ce monde via des appels système (read
, write
, fork
, exec
). Savoir que read
peut, selon le cache, ne pas toucher le disque, aide à expliquer vos profils de performance.
#Processus et threads: isolation vs concurrence
Un processus est un espace mémoire isolé; un thread est un flux d’exécution qui partage la mémoire du processus. Les threads permettent de paralléliser mais exigent une synchronisation explicite (mutex, sémaphores). Concevoir l’ordre de prise de verrous et limiter les sections critiques évitent les data races et interblocages.
#Mini‑atelier
Écrivez un petit programme qui lit un fichier ligne par ligne et mesure le temps; comparez avec une lecture par blocs de 64 KiB. Faites varier la taille de bloc et observez l’effet sur le débit. Puis créez deux threads qui ajoutent à un tableau partagé et reproduisez une condition de course avant de la corriger avec un verrou.