Ich weiß, dass die Systemaufrufschnittstelle auf einer niedrigen Ebene implementiert ist und daher architektur- / plattformabhängiger, nicht "generischer" Code.
Ich kann jedoch nicht klar erkennen, warum Systemaufrufe in Linux-32-Bit-x86-Kerneln Nummern haben, die in der ähnlichen Architektur von Linux-64-Bit-x86_64 nicht gleich bleiben. Was ist die Motivation / der Grund für diese Entscheidung?
Meine erste Vermutung war, dass der Hintergrund darin bestand, 32-Bit-Anwendungen auf einem x86_64-System lauffähig zu halten, damit das System über einen angemessenen Versatz zur Systemrufnummer weiß, dass der Benutzerbereich 32-Bit oder 64-Bit ist beziehungsweise. Dies ist jedoch nicht der Fall. Zumindest scheint es mir, dass read () als Systemrufnummer 0 in x86_64 nicht mit diesem Gedanken in Einklang gebracht werden kann.
Eine andere Vermutung war, dass das Ändern der Systemrufnummern einen sicherheitsrelevanten Hintergrund haben könnte, was ich selbst nicht bestätigen konnte.
Da ich die Herausforderungen der Implementierung der architekturabhängigen Codeteile nicht kenne, frage ich mich immer noch, wie sich die Systemrufnummern ändern lassen , wenn es nicht nötig erscheint (da sogar ein 16-Bit-Register weitaus mehr als die derzeit ~ 346 Zahlen speichern würde, um alle darzustellen Anrufe), würde dazu beitragen, etwas anderes zu erreichen, als die Kompatibilität zu unterbrechen (obwohl die Verwendung der Systemaufrufe durch eine Bibliothek, libc, es mildert).