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

Warum unterscheiden sich Linux-Systemrufnummern in x86 und x86_64?

Was die Begründung hinter der spezifischen Nummerierung betrifft, die zu keiner anderen Architektur passt [außer "x32", das eigentlich nur ein Teil der x86_64-Architektur ist]:In den sehr frühen Tagen der x86_64-Unterstützung im Linux-Kernel, bevor es welche gab Aufgrund schwerwiegender Abwärtskompatibilitätsbeschränkungen wurden alle Systemaufrufe neu nummeriert, um die Cacheline-Nutzung zu optimieren.

Ich weiß nicht genug über die Kernel-Entwicklung, um die spezifische Grundlage für diese Entscheidungen zu kennen, aber anscheinend gibt es einige Logik hinter der Entscheidung, alles mit diesen speziellen Nummern neu zu nummerieren, anstatt einfach die Liste von einer bestehenden Architektur zu kopieren und die unbenutzten zu entfernen. Es sieht so aus, als würde die Reihenfolge davon abhängen, wie häufig sie genannt werden - z. Lesen/Schreiben/Öffnen/Schließen sind im Vordergrund. Exit und Fork mögen "fundamental" erscheinen, aber sie werden jeweils nur einmal pro Prozess aufgerufen.

Es kann auch etwas daran liegen, Systemaufrufe, die häufig zusammen verwendet werden, innerhalb derselben Cache-Zeile zu halten (diese Werte sind nur ganze Zahlen, aber es gibt eine Tabelle im Kernel mit Funktionszeigern für jeden einzelnen, sodass jede Gruppe von 8 Systemaufrufen belegt eine 64-Byte-Cachezeile für diese Tabelle)


Siehe die Antwort auf die Frage "Warum unterscheiden sich die Systemrufnummern in AMD64 Linux?" bei Stapelüberlauf.

Fazit:Aus Kompatibilitätsgründen ist die Systemaufrufliste stabil und kann nur wachsen. Als die x86-64-Architektur erschien, war die ABI (Argument Passing, Returned Value) anders, daher nutzten die Kernel-Entwickler die Gelegenheit, lang erwartete Änderungen einzubringen.


Linux
  1. Warum unterscheiden sich Pfadvariablen beim Ausführen über Sudo und Su?

  2. Linux – Was sind High Memory und Low Memory unter Linux?

  3. Linux – Warum verwenden Linux-Dienstprogramme keinen Systemaufruf, um die aktuelle Uhrzeit abzurufen?

  4. Linux – Aufrufmethoden für Systemaufrufe im neuen Kernel?

  5. Schnellster Linux-Systemaufruf

Ist Linux ein Betriebssystem oder ein Kernel?

So aktualisieren Sie den Linux-Kernel in Ubuntu und Linux Mint

Linux-Kernel und seine Funktionen

Linux – Warum sind wahr und falsch so groß?

Linux – Sind verschiedene Linux/Unix-Kernel austauschbar?

Eingefrorenes Linux-System? Hier sind 3 Möglichkeiten, damit umzugehen