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’assembleur comme mov et lea. Ces instructions s’exécutent directement sur le processeur. Mais que faire si vous devez effectuer une tâche que le processeur ne peut pas accomplir 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 syscall ?
Un syscall (appel système) est une demande de votre programme au système d’exploitation. C’est ainsi que vous demandez au système d’exploitation de faire quelque chose pour vous.
Pourquoi vous avez besoin d’appels système :
| Tâche | Le CPU peut-il le faire seul ? | Appel système nécessaire ? |
|---|---|---|
| Ajouter deux nombres | Oui | Non |
| Déplacer des données entre les registres | Oui | Non |
| Afficher du texte à l’écran | Non | Oui |
| Lire les entrées du clavier | Non | Oui |
| Quitter un programme | Non | Oui |
| Ouvrir un fichier | Non | Oui |
Comment fonctionne un syscall :
- Tu places un numéro de syscall dans
rax(cela 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 exécute la requête
- Le système d’exploitation rend le contrôle à votre programme
Analogie :
Imagine qu’un syscall soit comme appeler un service administratif :
| Étape | Analogie | En assembleur |
|---|---|---|
| 1 | Décider du service dont tu as besoin | Choisir le numéro du 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 de l’OS effectue le travail |
| 5 | Recevoir le 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 | Met fin au programme | Chapitre 4 |
write | 1 | Affiche du texte à l’écran | Chapitre 5 |
L’appel système le plus important pour l’instant : <strong>exit</strong>
Sans exit, votre programme continuerait à s’exécuter indéfiniment ou planterait. Chaque programme que vous écrivez doit se terminer par un appel système exit.
mov rax, 60 ; syscall number for exit
mov rdi, 0 ; exit code (0 = success)
syscall ; ask the OS to exitEssayez 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