¿Cuál es la diferencia entre las llamadas principales y del sistema de clases de herramientas?
La llamada llamada al sistema es una serie de funciones muy poderosas proporcionadas por el kernel. Estas llamadas al sistema se implementan en el kernel y luego se realizan a los usuarios de cierta manera, generalmente a través de trampas de puerta. Las llamadas al sistema son la interfaz para la interacción entre los programas de usuario y el kernel.
Todo el proceso de llamada al sistema se puede resumir de la siguiente manera:
1. Ejecutar programa de usuario (como: fork)
2. De acuerdo con la implementación de la función en glibc, obtenga el número de llamada del sistema y ejecute int $0x80 para generar una interrupción.
3. Realice la conversión del espacio de direcciones y el cambio de pila, y ejecute SAVE_ALL. (Ingrese al modo kernel)
4. Realice el procesamiento de interrupciones y llame a las funciones del kernel de acuerdo con la tabla de llamadas del sistema.
5. Ejecutar funciones del kernel.
6. Ejecute RESTORE_ALL y regrese al modo de usuario
La diferencia entre las funciones de la biblioteca y las llamadas al sistema:
En la programación a largo plazo, la gente ha descubierto que el uso de llamadas al sistema tiene una gran desventaja, que es la portabilidad del programa, por ejemplo, las funciones de llamada al sistema proporcionadas por el sistema Linux son diferentes de las de Windows. No solo los métodos de implementación son diferentes, sino que también los nombres de las funciones y los parámetros proporcionados a los usuarios son diferentes. Por lo tanto, si un programa bien implementado utiliza llamadas al sistema Linux como la función wait4, no podrá compilarse en Windows. Entonces a la gente se le ocurrió una manera de encapsular las llamadas al sistema Windows y Linux y darles a todos una función unificada (yo solía llamarla interfaz), de modo que se resuelve el problema de la portabilidad del programa.
Por lo tanto, se puede pensar que las funciones de la biblioteca son una encapsulación de llamadas al sistema (no todas las funciones de la biblioteca lo son), para resolver algunos problemas comunes y proporcionar una interfaz de llamadas al sistema unificada Las ventajas y desventajas de las llamadas al sistema. son: las llamadas al sistema son obviamente más rápidas que las funciones de la biblioteca (no necesariamente todas, pero la mayoría lo son), pero las llamadas al sistema carecen de portabilidad. Las funciones de la biblioteca son más lentas, pero resuelven el problema de la migración. Durante el proceso de desarrollo, debes decidir cuál usar según tu situación real