Llamada al sistema frente a llamada de función
Un procesador típico ejecuta las instrucciones una por una. Pero puede haber ocasiones en las que el procesador tenga que detener la instrucción actual y ejecutar algún otro programa o segmento de código (que resida en algún otro lugar). Después de hacer esto, el procesador vuelve a la ejecución normal y continúa desde donde lo dejó. Una llamada de sistema y una llamada de función son tales ocasiones. Una llamada al sistema es una llamada a una subrutina integrada en el sistema. Una llamada de función es una llamada a una subrutina dentro del propio programa.
¿Qué es una llamada al sistema?
Las llamadas al sistema brindan a los programas que se ejecutan en la computadora una interfaz para comunicarse con el sistema operativo. Cuando un programa necesita solicitar un servicio (para el cual no tiene permiso para hacerlo por sí mismo) desde el núcleo del sistema operativo, utiliza una llamada al sistema. Los procesos a nivel de usuario no tienen los mismos permisos que los procesos que interactúan directamente con el sistema operativo. Por ejemplo, para comunicarse con un dispositivo de E/S externo o para interactuar con cualquier otro proceso, un programa utiliza llamadas al sistema.
¿Qué es una llamada de función?
Una llamada de función también se denomina llamada de subrutina. Una subrutina (también conocida como procedimiento, función, método o rutina) es parte de un programa mayor que se encarga de realizar una tarea específica. El programa más grande puede ejecutar una gran carga de trabajo y la subrutina puede estar realizando solo una tarea simple, que también es independiente de la codificación del programa restante. Una función está codificada de tal manera que puede llamarse varias veces y desde diferentes lugares (incluso desde dentro de otras funciones). Cuando se llama a una función, el procesador puede ir a donde reside el código de la función y ejecutar las instrucciones de la función una por una. Después de completar las funciones, el procesador volverá exactamente donde lo dejó y continuará la ejecución a partir de la siguiente instrucción. Las funciones son una gran herramienta para la reutilización de código. Muchos lenguajes de programación modernos admiten funciones. Una colección de funciones se llama biblioteca. Las bibliotecas se utilizan a menudo como un medio para compartir y comercializar software. En algunos casos, todo el programa podría ser una secuencia de subrutinas (por ejemplo, compilación de código enhebrado).
¿Cuál es la diferencia entre Llamada del sistema y Llamada de función?
La llamada al sistema es una llamada a una subrutina integrada en el sistema, mientras que una llamada a una función es una llamada a una subrutina dentro del programa. A diferencia de las llamadas a funciones, las llamadas al sistema se utilizan cuando un programa necesita realizar alguna tarea para la que no tiene privilegios. Las llamadas al sistema son puntos de entrada al núcleo del sistema operativo y no están vinculadas al programa (como las llamadas a funciones). A diferencia de las llamadas al sistema, las llamadas a funciones son portátiles. La sobrecarga de tiempo de una llamada al sistema es mayor que la sobrecarga de una llamada de función porque debe tener lugar una transición entre el modo de usuario y el modo kernel. Las llamadas al sistema se ejecutan en el espacio de direcciones del kernel, mientras que las llamadas a funciones se ejecutan en el espacio de direcciones del usuario.