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.