GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Aufrufmethoden für Systemaufrufe im neuen Kernel?

Ich habe gelesen, dass in den neueren Kerneln Systemaufrufe mit der Anweisung INT X80 und auch mit der Anweisung sysenter aufgerufen werden. Und auch die sysenter-Anweisung führt im Vergleich zu der anderen Methode zu einem schnelleren Aufruf.

Wie könnte ich überprüfen, welche Systemaufrufe von dieser Methode aufgerufen werden?

Akzeptierte Antwort:

Wenn Sie keinen Kernel vor 2.6 ausführen, werden Sie int x80 nicht verwenden Methode zum Aufrufen der meisten Systemaufrufe. Sie wurden zugunsten des systenter/sysexit ersetzt Methode seit Kernel 2.6 (beginnend in der 2.5-Serie) für wichtige Dinge.

Beachten Sie, dass, wenn Sie alte Binärdateien haben, die für ältere Kernel erstellt wurden, diese immer noch den int x80 verwenden könnten -Methode – das einzige, was Sie dagegen tun können, ist, sie neu zu erstellen (oder aktualisierte Binärdateien zu erhalten).
Führen Sie ldd your_exe aus in dem Programm, über das Sie sich Sorgen machen. Wenn es linux-gate.so.1 auflistet oder linux-vdso.so.1 , es verwendet die neuen Systemaufrufe. Wenn nicht, verwendet es (höchstwahrscheinlich) die alte Methode.
Bei statischen Binärdateien ist es schwieriger zu sagen. Eine Möglichkeit wäre, objdump your_exe | less und suchen Sie nach Wrappern für Systemaufrufe (__gettimeofday ist ein guter Kandidat). Sie können anhand der Disassemblierung sehen, ob ein Interrupt verwendet wird oder nicht.

Eine gute Übersicht darüber, wie die alten INT 80-Aufrufe funktionierten und wie die neue Syscall-Schnittstelle entstanden und eingerichtet ist, finden Sie hier:Systemaufrufe (von Andries Brouwer).
Eine weitere gute Lektüre:Was ist Linux-Gate. so.1?.

Diese beiden Artikel sind in diesem anderen verlinkt:Sysenter Based System Call Mechanism in Linux 2.6, und verweist auf das Buch Understanding The Linux Kernel von Daniel P. Bovet, Marco Cesati, das gut für allgemeinere Informationen ist.

Also kurz gesagt:mach dir keine Sorgen. Wenn Sie ein ausreichend aktuelles System haben (CPU, Kernel und Distribution), verwenden Sie die „schnellen“ Systemaufrufe.


Linux
  1. Linux-Systemaufruftabelle oder Cheatsheet für Assembly

  2. Schnellster Linux-Systemaufruf

  3. Wie übergebe ich Parameter an den Linux-Systemaufruf?

  4. Linux-Warteschlangensystem

  5. Fork vs. Clone auf 2.6 Kernel Linux

Finden Sie Linux-Systemdetails mit Python

So überwachen Sie die Betriebszeit von Linux-Systemen mit Uptimed

Zeigen Sie Linux-Systeminformationen im Terminal mit Macchina an

So finden Sie Linux-Systemdetails mit inxi

So fügen Sie unter Linux ein neues Gerät zum BTRFS-Dateisystem hinzu

Linux Kernel 5.0 veröffentlicht, neue Funktionen und Verbesserungen!