GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Méthodes d'appel système dans le nouveau noyau ?

J'ai lu que dans les nouveaux noyaux, les appels système sont invoqués à l'aide de l'instruction INT X80 et également à l'aide de l'instruction sysenter. De plus, l'instruction sysenter donne une invocation plus rapide par rapport à l'autre méthode.

Comment puis-je vérifier quels appels système sont invoqués par cette méthode ?

Réponse acceptée :

À moins que vous n'utilisiez un noyau pré-2.6, vous n'utiliserez pas le int x80 méthode pour invoquer la plupart des appels système. Ils ont été remplacés au profit du systenter/sysexit méthode depuis le noyau 2.6 (commencé dans la série 2.5) pour les choses qui comptent.

Notez que si vous avez d'anciens binaires qui ont été construits avec des noyaux plus anciens, ceux-ci pourraient toujours utiliser le int x80 - la seule chose que vous puissiez faire à ce sujet est de les reconstruire (ou d'obtenir des fichiers binaires mis à jour).
Exécutez ldd your_exe sur le programme qui vous inquiète. S'il répertorie linux-gate.so.1 ou linux-vdso.so.1 , il utilise les nouveaux appels système. Sinon, c'est (très probablement) en utilisant l'ancienne méthode.
Pour les binaires statiques, c'est plus difficile à dire. Une façon serait de objdump your_exe | less et recherchez les wrappers d'appels système (__gettimeofday est un bon candidat). Vous verrez à partir du démontage s'il utilise une interruption ou non.

Un bon récapitulatif du fonctionnement des anciens appels INT 80 et de la création et de la configuration de la nouvelle interface syscall peut être trouvé ici :Appels système (par Andries Brouwer).
Une autre bonne lecture :Qu'est-ce que linux-gate. so.1 ?.

Ces deux articles sont liés dans cet autre :Sysenter Based System Call Mechanism in Linux 2.6, et pointe vers le livre Understanding The Linux Kernel de Daniel P. Bovet, Marco Cesati qui est bon pour des informations plus générales.

Bref :ne vous en faites pas. Si vous avez un système assez récent (CPU, noyau et distribution), vous utilisez les appels système "rapides".


Linux
  1. Comment sauvegarder l'intégralité de votre système Linux à l'aide de Rsync

  2. Exemple d'utilisation de getnstimeofday dans le noyau Linux

  3. Appel système Linux le plus rapide

  4. Comment passer des paramètres à l'appel système Linux ?

  5. Pourquoi est-il nécessaire de modifier les tables d'appels système sous Linux ?

Trouver les détails du système Linux à l'aide de Python

Comment surveiller la disponibilité du système Linux à l'aide d'Uptimed

Afficher les informations système Linux dans le terminal à l'aide de Macchina

Comment trouver les détails du système Linux à l'aide d'inxi

Comment ajouter un nouveau périphérique au système de fichiers BTRFS sous Linux

Lancement du noyau Linux 5.0, nouvelles fonctionnalités et améliorations !