En cuanto al razonamiento detrás de la numeración específica, que no coincide con ninguna otra arquitectura [excepto "x32", que en realidad es solo parte de la arquitectura x86_64]:En los primeros días del soporte x86_64 en el kernel de Linux, antes de que hubiera graves restricciones de compatibilidad con versiones anteriores, todas las llamadas del sistema se volvieron a numerar para optimizarlas en el nivel de uso de cacheline.
No sé lo suficiente sobre el desarrollo del kernel para conocer la base específica de estas opciones, pero aparentemente hay algo lógica detrás de la elección de volver a numerar todo con estos números particulares en lugar de simplemente copiar la lista de una arquitectura existente y eliminar los que no se utilizan. Parece que el orden puede basarse en la frecuencia con la que se llaman, p. leer/escribir/abrir/cerrar están al frente. Exit y fork pueden parecer "fundamentales", pero cada uno de ellos se llama solo una vez por proceso.
También puede haber algo relacionado con mantener las llamadas al sistema que se usan comúnmente juntas dentro de la misma línea de caché (estos valores son solo números enteros, pero hay una tabla en el kernel con punteros de función para cada uno, por lo que cada grupo de 8 llamadas al sistema ocupa una línea de caché de 64 bytes para esa tabla)
Vea esa respuesta a la pregunta "¿Por qué los números de llamada del sistema son diferentes en amd64 linux?" en Desbordamiento de pila.
En resumen:en aras de la compatibilidad, la lista de llamadas del sistema es estable y solo puede crecer. Cuando apareció la arquitectura x86 64, el ABI (paso de argumento, valor devuelto) era diferente, por lo que los desarrolladores del kernel aprovecharon la oportunidad para traer cambios que habían esperado durante mucho tiempo.