Appels système rapides vs. lents : comment les signaux réveillent les appels système bloqués

2025-06-03

Cet article explore les différences essentielles entre les appels système rapides et lents dans les systèmes d’exploitation. Les appels système rapides (comme `getpid()`) retournent immédiatement, tandis que les appels système lents (comme `read()`) peuvent se bloquer en attendant des événements externes. L’article se concentre sur la manière dont les signaux interrompent les appels système lents bloqués, en démontrant à l’aide d’exemples de code comment gérer les erreurs `EINTR` et utiliser l’indicateur `SA_RESTART`. Il examine également les nuances des E/S sur disque et la manière dont le noyau gère les différents types d’appels système, en comparant les forces et les faiblesses de divers modèles d’E/S (E/S bloquante, E/S non bloquante, multiplexage d’E/S, E/S pilotée par les signaux, E/S asynchrone et I/O Uring).