Non, un appel système n'est pas déclenché directement par le matériel. Le matériel déclenche des *interruptions*, qui peuvent *conduire* à un appel système, mais l'appel système lui-même est un processus logiciel.
Voici la répartition :
* Interruption matérielle : Les périphériques matériels (comme une carte réseau recevant des données, un disque terminant une lecture ou une minuterie expirant) génèrent des interruptions. Ces interruptions signalent au processeur que quelque chose nécessite une attention particulière.
* Gestion des interruptions : Le processeur répond à une interruption en enregistrant son état actuel et en passant à un gestionnaire d'interruption (un morceau de code spécifique).
* Appel système (potentiel) : Le gestionnaire d'interruption peut déterminer que l'interruption nécessite un service système (par exemple, la lecture de données à partir d'un fichier disque). Dans ce cas, le gestionnaire d'interruption lancera un *appel système*.
* Exécution d'appel système : L'appel système est une fonction logicielle qui interagit avec le noyau du système d'exploitation. Le noyau effectue l'opération demandée (par exemple, lire les données du disque) et renvoie le résultat au processus de l'espace utilisateur qui a lancé l'appel système.
En bref :le matériel déclenche des interruptions, le logiciel (généralement un gestionnaire d'interruption) décide si un appel système est nécessaire, et l'appel système est ensuite exécuté par le noyau du système d'exploitation – tous les logiciels.
|