¿Qué es una llamada del sistema en Linux y cómo funciona con ejemplos?

¿Qué es una llamada del sistema en Linux y cómo funciona con ejemplos?

Una llamada del sistema es una función que permite que un proceso se comunique con el kernel de Linux. Es solo una forma programática para que un programa de computadora ordene una instalación del kernel del sistema operativo. Las llamadas al sistema exponen los recursos del sistema operativo a los programas de usuario a través de una API (interfaz de programación de aplicaciones). Las llamadas del sistema solo pueden acceder al marco del kernel. Se necesitan llamadas del sistema para todos los servicios que necesitan recursos.

El kernel de Linux es un software patentado que carga y opera en el dispositivo en la menos etapa potencial. Su trabajo es organizar todo lo que sucede en la máquina, desde el teclado, la unidad de disco y los eventos de red hasta proporcionar cortes de tiempo para la ejecución concurrente de diferentes programas. La separación de software y hardware crea una burbuja segura que mejora la protección y la confiabilidad. Las aplicaciones sin privilegios no pueden alcanzar el almacenamiento de otros programas, y si uno falla, el núcleo suspende el proceso para que no dañe todo el sistema.

Wafer Wrapper delgada:

Las llamadas del sistema Linux no se representan explícitamente al núcleo en ciertos programas. Casi todos los programas usan la biblioteca C BASIC y ofrecen un envoltorio ligero pero esencial sobre las llamadas del sistema Linux. Luego, el repositorio proporciona la llamada de máquina Linux que lo acompaña después de garantizar que los parámetros de la característica se traduzcan en los registros de procesador correctos. Cada vez que el envoltorio recibe datos de la llamada del sistema, lo analiza y los contribuye al programa claramente. Cualquier operación interactiva de máquina en un programa se convierte en última instancia en una llamada del sistema. Entonces, echemos un vistazo a algunos de ellos. Hay una larga lista de llamadas del sistema Linux que podemos usar en nuestro sistema Linux. Aquí está la lista de algunas llamadas al sistema Linux comunes y en su mayoría usadas.

  • Abierto
  • Cerca
  • Ejecución
  • Escribir
  • Leer
  • Buque
  • Seleccionar

Discutamos algunas de las llamadas del sistema Linux usando el idioma C en nuestro artículo para ponerse a mano con él.

Llamada del sistema abierto:

Podemos usar la llamada del sistema "Abrir" en nuestra distribución de Linux para abrir rápidamente el documento, que especificaremos en nuestro código de lenguaje C. Iniciar el terminal de comando en primer lugar. Puede usar el atajo "Ctrl+Alt+T". Supongamos que tiene un archivo de texto "Prueba.txt "en el directorio de inicio, y contiene algo de contenido en él. Entonces, al principio, debe crear un nuevo nombre de archivo de tipo C "Nuevo.C "en la terminal a través de Nano Editor. Por lo tanto, pruebe la simple instrucción de Nano.

$ nano nuevo.C

Ahora, el editor de Nano ha sido lanzado. Escriba el código a continuación. Tenemos dos descriptores de archivos en el código. Ambos archivos se pueden abrir utilizando la llamada del sistema abierto. El primer descriptor contiene una llamada de lectura, y la segunda contiene la función de escritura. La primera llamada abierta es abrir el archivo de texto "Prueba.txt "y guardar su contenido en el descriptor de archivos" FD ". La segunda llamada del sistema abierto está creando un archivo llamado "Target". El documento "objetivo" ha sido reembolsado a un descriptor de archivo "FD1". La instrucción de escritura se utiliza para transcribir los bytes de datos en el búfer. Toque "Ctrl+S" para guardar el código y presione la tecla de acceso directo "Ctrl+X" para dejar el archivo.

Ejecute la instrucción de compilación de GCC para compilar este código C.

$ GCC nuevo.C

Ejecutemos el código utilizando el simple "A.Out ”consulta en el caparazón de la siguiente manera:

ps ./a.afuera

Los datos de salida se han transmitido al archivo "objetivo". Verifiquemos el archivo "objetivo" utilizando la consulta "CAT". La pantalla de salida muestra los 20 datos de caracteres en el archivo "objetivo".

$ Cat Target

Llamada del sistema EXEC:

La llamada del sistema EXEC se está lanzando para ejecutar un archivo que se está procesando actualmente. Se sustituye el archivo ejecutable anterior y se opera el archivo actual cada vez que se llama a Exec. Al usar una llamada del sistema EXEC, podemos suponer que hacerlo sobrescribirá el documento o la aplicación anterior en el bucle con una nueva. Se utiliza un nuevo software para anular el material de todo el proceso. El documento cuyo título se proporciona en la declaración cada vez que invocación exec () se sustituye para la sección de información del usuario que ejecuta la llamada al sistema Exec () (). Por lo tanto, abra el terminal de comando y, utilizando el editor nano, cree un nuevo archivo de tipo C de la siguiente manera:

$ nano exp.C

El editor ha sido abierto ahora. Escriba el siguiente código de lenguaje C a continuación. Hay tres bibliotecas principales incluidas en él. Después de eso, la función principal ha sido instanciada. La instrucción de impresión ha estado mostrando los datos de cadena y el ID de proceso del archivo "exp.C". La función getpid () se ha utilizado para este propósito. Luego tenemos una matriz de tipo de personaje con algunos valores. La llamada del sistema EXEC se ha utilizado para tomar el nombre del archivo y la matriz de una línea anterior como argumento. Ahora el archivo "Hola.c "será procesado. Después de eso, otra declaración de impresión llega tan lejos, pero nunca se ejecutará. Presione "Ctrl+S" para guardar este archivo. Hit "Ctrl+X" para salir.

Ahora es el momento de crear otro archivo C, "Hola.c "usando el editor nano. Use la consulta a continuación en el shell para hacerlo.

$ nano hola.C

Escriba el siguiente código en él. Este código contiene dos declaraciones de impresión en la función principal. El primero es solo imprimir una cadena dada en ella, y la segunda es imprimir la cadena mientras obtiene el ID de proceso del archivo utilizado actualmente, que es "Hola.C".

Compilemos ambos archivos uno tras otro usando GCC.

$ GCC -O EXP EXP.C
$ gcc -o hola hola.C

Cuando ejecutamos el EXP.Cile C, emitirá la primera declaración de impresión de la EXP.archivo c y ambas líneas de impresión desde el hola.archivo c.

ps ./Exp

Conclusión:

Hemos elaborado todo el concepto de llamadas del sistema Linux y cómo se pueden usar en su sistema Linux. Hemos usado Ubuntu 20.04 Al implementar este concepto.