Menu
Coddy logo textTech

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âcheLe CPU peut-il le faire seul ?Besoin d'un appel système ?
Additionner deux nombresOuiNon
Déplacer des données entre les registresOuiNon
Afficher du texte à l'écranNonOui
Lire une entrée clavierNonOui
Quitter un programmeNonOui
Ouvrir un fichierNonOui

Fonctionnement d'un syscall :

  1. Vous placez un numéro de syscall dans rax (indique au système d'exploitation ce que vous voulez)
  2. Vous placez les arguments dans d'autres registres (rdi, rsi, rdx, etc.)
  3. Vous exécutez l'instruction syscall
  1. Le CPU bascule dans le noyau du système d'exploitation (OS)
  2. L'OS effectue la requête
  3. L'OS redonne le contrôle à votre programme

Analogie :

Considérez un appel système (syscall) comme le fait d'appeler un bureau gouvernemental :

ÉtapeAnalogieEn assembleur
1Décidez du service dont vous avez besoinChoisissez le numéro de l'appel système (placez-le dans rax)
2Remplissez les formulairesPlacez les arguments dans les registres
3Soumettez la demandeExécutez syscall
4Le gouvernement traite la demandeLe noyau de l'OS fait le travail
5Récupérez votre résultatLe programme continue

Appels système que vous apprendrez dans ce cours :

Appel systèmeNuméroCe qu'il faitChapitre
exit60Termine le programmeChapitre 4
write1Affiche du texte à l'écranChapitre 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 quitter

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

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