¿Cuál es la diferencia entre System Call y API en términos simples?

En breve

Una API es un término genérico para una manera de interactuar con una biblioteca / servicio existente, etc.… mientras que una llamada al sistema se trata de una aplicación que invoca la pila a los recursos subyacentes y demás, generalmente a través de una API estándar por derecho propio.

En poco tiempo:

API

La interfaz de programación de aplicaciones (API) es un conjunto de funciones, objetos, protocolos o estructuras de datos para el soporte del desarrollo de aplicaciones para desarrolladores / programadores. En realidad, es un tipo de definición de función que especifica cómo poner a disposición un servicio específico del sistema / sistema operativo. Las API están disponibles desde la biblioteca o desde el propio sistema operativo. Siempre que un programador necesite un servicio específico del sistema operativo, él / ella puede usar la API adecuada para hacerlo.

Llamadas al sistema

Los procesos en un sistema se ejecutan en modos diferentes, el proceso en modo usuario no tiene acceso a las instrucciones privilegiadas. Si desean realizar instrucciones privilegiadas o necesitan algún servicio, soliciten kernel para ese servicio a través de Llamadas del sistema . Las llamadas al sistema se realizan mediante interrupción de software. Esta es realmente una solicitud del servicio, mientras que API es una descripción de la función que el programador puede usar para sus programas, es como una herramienta utilizada para obtener una tarea específica en sus programas.

Primero déjame escribir sobre la llamada al sistema en Linux. El sistema operativo Linux se divide en dos partes llamadas espacio de kernel y espacio de usuario. El espacio del kernel tendrá controladores de dispositivo y otros componentes del kernel. El espacio de usuario tendrá las aplicaciones de usuario ejecutándose en Linux. El espacio del kernel está protegido y no se puede acceder directamente desde el espacio del usuario.

Digamos que desea leer algunos datos de un dispositivo en serie desde su aplicación. Linux tiene algunas funciones llamadas llamadas al sistema que se llaman desde el espacio del usuario e interactúan con el controlador del dispositivo en el espacio del kernel para obtener los datos requeridos. Generalmente, abrir, cerrar, leer, escribir e ioctl son las funciones de llamada del sistema.

Ahora llegando a API, API es un término genérico utilizado para identificar las funciones expuestas por cualquier biblioteca. Estas funciones se implementan como parte de bibliotecas o SDK.

Una interfaz de programación de aplicaciones (API) es (como su nombre lo indica) una interfaz para que su aplicación use código que no pertenece a su aplicación (generalmente una biblioteca). Por lo general, una API se compone de un conjunto de llamadas a funciones / métodos que su aplicación puede realizar en la biblioteca.

Todas las llamadas al sistema juntas constituyen una API que el sistema operativo (kernel) proporciona a las aplicaciones que se ejecutan en esa plataforma. En resumen, las llamadas al sistema también son parte de una API (por ejemplo, la API POSIX constituye principalmente las llamadas al sistema realizadas al núcleo).

Una llamada al sistema es una API que implica invocar la funcionalidad del núcleo. API solo significa interfaz de programación de aplicaciones, la aplicación aquí puede ser cualquier cosa, puede ser kernel o una aplicación de nivel de usuario.

En cierto modo, no hay gran diferencia. Ambos pueden verse como llamadas de función / procedimiento (sintaxis).

Las API pueden tener llamadas al sistema dentro de ellas. La mayor diferencia es que las llamadas al sistema tienen efectos secundarios fuera del alcance de un programa como una llamada de lectura (2) o de escritura (2). Sí, esos podrían considerarse como un nivel más bajo que una API.

Lo molesto es cuando una llamada al sistema es específica del sistema. Puede ajustarse a la sintaxis del lenguaje, pero no tiene ningún significado ni vínculo en otros sistemas. Esta era una forma de bloquear a los usuarios en el código / hardware del proveedor.

La llamada al sistema es una solicitud explícita al núcleo. Es un mecanismo de bajo nivel. Sin embargo, API es un mecanismo de alto nivel. Utiliza API en programación de alto nivel para invocar llamadas del sistema en arquitectura de bajo nivel.

Una API es un término genérico para una manera de interactuar con una biblioteca / servicio existente, etc.… mientras que una llamada al sistema se trata de una aplicación que invoca la pila a los recursos subyacentes y demás, generalmente a través de una API estándar por derecho propio.