Me di cuenta de que las llamadas al sistema x86 int $0x80
y amd64 syscall
tienen números diferentes. Por ejemplo, sys_exit
es syscall 1 en x86 y syscall 60 en amd64. ¿Hay una razón (histórica) para los diferentes esquemas de numeración de llamadas del sistema?¿Por qué los números de llamada del sistema son diferentes en amd64 linux?
Respuesta
Se supone que la interfaz syscall es muy estable y solo se permiten adiciones. Hablando de la ventaja de que la interfaz de syscall es diferente para cada arquitectura, los chicos de Linux muy probablemente decidieron limpiar algún cruft acumulado e iniciar las llamadas de sistema amd64 desde cero.
Referencia: linux/Documentation/ABI/stable/syscalls
Esta interfaz coincide con gran parte de la interfaz POSIX y se basa en que y otras interfaces basadas en Unix. Solo se agregará a lo largo del tiempo, y no le quitarán nada.
Tenga en cuenta que esta interfaz es diferente para cada arquitectura que admite Linux. Consulte la documentación específica de la arquitectura para obtener detalles sobre los números de syscall que se asignarán a cada llamada de sistema .
- 1. ¿Por qué los números de Fibonacci son significativos en informática?
- 2. ¿Cómo se usan los registros fs/gs en Linux AMD64?
- 3. ¿Por qué los nombres de funciones de biblioteca estándar son diferentes entre Windows y Linux?
- 4. ¿Cuáles son los diferentes números de versión de AccuRev?
- 5. Funciones virtuales en constructores, ¿por qué los idiomas son diferentes?
- 6. ¿Qué son los números de generación de inodo?
- 7. ¿Por qué estos números no son iguales?
- 8. números mágicos de la convocatoria reiniciar el sistema Linux()
- 9. ¿Por qué ToLookup y GroupBy son diferentes?
- 10. ¿Por qué los resultados del mapa() y la comprensión de la lista son diferentes?
- 11. ¿Qué son los "números mágicos" en la programación de computadoras?
- 12. Windows equivalente a los espacios de nombres de Linux (montajes del sistema de archivos por proceso)?
- 13. Linux problema de permisos al ejecutar wkhtmltopdf amd64
- 14. ¿Por qué los objetos Buffer y List son iguales (incluso si son de clases diferentes)?
- 15. ¿Por qué los subprocesos del sistema operativo se consideran caros?
- 16. En cuanto a los números de error en Linux
- 17. ¿Cómo se implementa la llamada al sistema en Linux?
- 18. ¿Por qué las llamadas C# son diferentes para métodos sobrecargados para diferentes valores del mismo tipo?
- 19. Identificación de qué biblioteca del sistema Linux contiene una función
- 20. ¿Por qué los nodos y los elementos son diferentes en XML? ¿Cuál fue el razonamiento?
- 21. ¿Qué son los comandos incorporados en shell en Linux?
- 22. ¿Qué son los métodos de devolución de llamada?
- 23. ¿Por qué setjmp (3) no guarda todos los registros en AMD64?
- 24. Llamada falsa del sistema en ruby
- 25. ¿por qué diferentes respuestas?
- 26. ¿Por qué los índices Rails Weekday son diferentes a los de Ruby's?
- 27. ¿Por qué algunos objetos no son accesibles desde diferentes subprocesos?
- 28. Los números de escala son <= 255?
- 29. Kernel de Linux: ¿qué función tiene la fuente donde se eligen aleatoriamente los números de puerto?
- 30. ¿Por qué mi aplicación para Android asigna cantidades sustancialmente diferentes de memoria en diferentes versiones del sistema operativo?
Pertinente publicación de LKML: http://lkml.iu.edu/hypermail/linux/kernel/0104.0/0547.html –