Qu'est-ce qu'un Syscall ?
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 31 sur 45.
Vous avez écrit des instructions d’assemblage comme mov et lea. Ces instructions s’exécutent directement sur le processeur. Mais que faire si vous devez effectuer une opération que le processeur ne peut pas réaliser seul, comme afficher quelque chose à l’écran, lire au clavier ou quitter un programme ?
Pour ces tâches, vous avez besoin du système d’exploitation (Linux, dans ce cours).
Qu’est-ce qu’un appel système ?
Un syscall (appel système) est une requête de votre programme au système d’exploitation. C’est ainsi que vous demandez au système d’exploitation d’effectuer une action pour vous.
Pourquoi vous avez besoin d’appels système :
| Tâche | Le processeur peut-il le faire seul ? | Faut-il un appel système ? |
|---|---|---|
| Add two numbers | Yes | No |
| Move data between registers | Yes | No |
| Print text to screen | No | Yes |
| Read keyboard input | No | Yes |
| Exit a program | No | Yes |
| Open a file | No | Yes |
Fonctionnement d’un appel système :
- Tu places un numéro d’appel système dans
rax(indique au système d’exploitation ce que tu veux) - Tu places les arguments dans d’autres registres (
rdi,rsi,rdx, etc.) - Tu exécutes l’instruction
syscall
- Le processeur passe au noyau du système d’exploitation
- Le système d’exploitation effectue la requête
- Le système d’exploitation rend le contrôle à votre programme
Analogie :
Imagine qu’un appel système (syscall) soit comme un appel à un service administratif :
| Étape | Analogie | En assembleur |
|---|---|---|
| 1 | Décider du service dont tu as besoin | Choisir le numéro de syscall (le placer dans rax) |
| 2 | Remplir les formulaires | Placer les arguments dans les registres |
| 3 | Soumettre la demande | Exécuter syscall |
| 4 | Le service administratif traite la demande | Le noyau du système d’exploitation effectue le travail |
| 5 | Récupérer le résultat | Le programme reprend son exécution |
Appels système que vous apprendrez dans ce cours :
| Appel système | Numéro | Fonction | Chapitre |
|---|---|---|---|
exit | 60 | Termine le programme | Chapitre 4 |
write | 1 | Affiche du texte à l’écran | Chapitre 5 |
L’appel système le plus important pour l’instant : exit
Sans exit, ton programme continuerait à s’exécuter indéfiniment ou planterait. Chaque programme que tu écris doit se terminer par un appel système exit.
mov rax, 60 ; numéro d'appel système pour exit
mov rdi, 0 ; code de sortie (0 = succès)
syscall ; demande au système d'exploitation de quitterEssayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1La Machine
Qu'est-ce qu'un CPULa mémoireRegistres vs MémoireFonctionnement des instructionsLe modèle à deux fichiersL'architecture x86-64Entraînez-vous par vous-même : Playground Assembly