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 se passe-t-il si vous devez faire quelque chose que le processeur ne peut pas faire seul — comme afficher du texte à 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 syscall ?
Un syscall (appel système) est une requête de votre programme au système d'exploitation. C'est ainsi que vous demandez à l'OS de faire quelque chose pour vous.
Pourquoi vous avez besoin d'appels système :
| Tâche | Le CPU peut-il le faire seul ? | Besoin d'un appel système ? |
|---|---|---|
| Additionner deux nombres | Oui | Non |
| Déplacer des données entre les registres | Oui | Non |
| Afficher du texte à l'écran | Non | Oui |
| Lire une entrée clavier | Non | Oui |
| Quitter un programme | Non | Oui |
| Ouvrir un fichier | Non | Oui |
Fonctionnement d'un syscall :
- Vous placez un numéro de syscall dans
rax(indique au système d'exploitation ce que vous voulez) - Vous placez les arguments dans d'autres registres (
rdi,rsi,rdx, etc.) - Vous exécutez l'instruction
syscall
- Le CPU bascule dans le noyau du système d'exploitation (OS)
- L'OS effectue la requête
- L'OS redonne le contrôle à votre programme
Analogie :
Considérez un appel système (syscall) comme le fait d'appeler un bureau gouvernemental :
| Étape | Analogie | En assembleur |
|---|---|---|
| 1 | Décidez du service dont vous avez besoin | Choisissez le numéro de l'appel système (placez-le dans rax) |
| 2 | Remplissez les formulaires | Placez les arguments dans les registres |
| 3 | Soumettez la demande | Exécutez syscall |
| 4 | Le gouvernement traite la demande | Le noyau de l'OS fait le travail |
| 5 | Récupérez votre résultat | Le programme continue |
Appels système que vous apprendrez dans ce cours :
| Appel système | Numéro | Ce qu'il fait | 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 le moment : <strong>exit</strong>
Sans exit, votre programme continuerait de s'exécuter indéfiniment ou planterait. Chaque programme que vous écrivez doit se terminer par un appel système exit.
mov rax, 60 ; numéro d'appel système pour quitter
mov rdi, 0 ; code de sortie (0 = succès)
syscall ; demander 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-64