Llamadas al sistema

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

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

Una llamada al 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 solicite una instalación desde el 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 al sistema solo pueden acceder al marco del kernel. Las llamadas al sistema son necesarias para todos los servicios que necesitan recursos.

El kernel de Linux es un software propietario que se carga y opera en el dispositivo en la etapa menos 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 intervalos de tiempo para la ejecución simultánea 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 otro programa y, si uno falla, el kernel suspende el proceso para que no dañe todo el sistema.

Envoltura fina de oblea:

Las llamadas al sistema Linux no se procesan explícitamente en el kernel en ciertos programas. Casi todos los programas utilizan la biblioteca C básica y ofrecen un contenedor ligero pero esencial sobre las llamadas al sistema Linux. Luego, el repositorio proporciona la llamada de máquina Linux adjunta después de asegurarse de que los parámetros de la función se traduzcan en los registros de procesador correctos. Siempre que el contenedor recibe datos de la llamada al sistema, los analiza y los aporta al programa de forma clara. Cualquier operación interactiva con la máquina en un programa se convierte en última instancia en una llamada al sistema. Entonces, echemos un vistazo a algunos de ellos. Hay una larga lista de llamadas al sistema Linux que podemos usar en nuestro sistema Linux. Aquí está la lista de algunas llamadas al sistema Linux comunes y más utilizadas.

Analicemos algunas de las llamadas al sistema Linux que utilizan el lenguaje C en nuestro artículo para ponernos manos a la obra.

Llamada al sistema abierto:

Podemos usar la llamada al sistema "Abrir" en nuestra distribución de Linux para abrir rápidamente el documento, que especificaremos en nuestro código de lenguaje C. Inicie el terminal de comando en primer lugar. Puedes usar el atajo "Ctrl + Alt + T". Suponga que tiene un archivo de texto "prueba.txt ”en el directorio de inicio, y contiene algo de contenido. Entonces, al principio, debe crear un nuevo nombre de archivo de tipo C "nuevo.c ”en la terminal a través del editor nano. Por lo tanto, pruebe la sencilla instrucción nano a continuación.

$ nano nuevo.C

Ahora, se ha lanzado el editor Nano. Escriba el código que se muestra a continuación. Tenemos dos descriptores de archivo en el código. Ambos archivos se pueden abrir usando la llamada al sistema abierto. El primer descriptor contiene una llamada de lectura y el segundo 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 archivo" fd ". La segunda llamada al sistema abierto está creando un archivo llamado "objetivo". El documento "target" 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 método abreviado "Ctrl + X" para salir del archivo.

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

$ gcc nuevo.C

Ejecutemos el código usando el simple "a.out ”en el shell de la siguiente manera:

PS ./a.fuera

Los datos de salida se han transmitido al archivo "destino". Comprobemos el archivo "objetivo" mediante la consulta "gato". La pantalla de salida muestra los datos de 20 caracteres en el archivo "objetivo".

$ objetivo de gato

Llamada al sistema ejecutivo:

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

$ nano exp.C

El editor se ha abierto ahora. Escriba todo el código de lenguaje C a continuación en él. Hay tres bibliotecas principales incluidas en él. Después de eso, se ha creado una instancia de la función principal. La declaración de impresión ha estado mostrando los datos de la cadena y el Id. De proceso del archivo "exp.C". La función getpid () se ha utilizado para este propósito. Entonces tenemos una matriz de tipo de caracteres con algunos valores en ella. La llamada al sistema ejecutivo 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, llega otra declaración de impresión hasta ahora, pero nunca se ejecutará. Presione "Ctrl + S" para guardar este archivo. Presiona "Ctrl + X" para salir.

Ahora es el momento de crear otro archivo c, "hola.c ”usando el editor nano. Utilice la siguiente consulta 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 él, y el segundo es imprimir la cadena mientras busca el ID de proceso del archivo que se usa 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 la exp.c, generará la primera declaración de impresión del exp.c archivo y ambas líneas de impresión del saludo.archivo c.

PS ./Exp

Conclusión:

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

Cómo usar AutoKey para automatizar juegos de Linux
AutoKey es una utilidad de automatización de escritorio para Linux y X11, programada en Python 3, GTK y Qt. Usando su funcionalidad de scripting y MAC...
Cómo mostrar el contador de FPS en juegos de Linux
Los juegos de Linux obtuvieron un gran impulso cuando Valve anunció el soporte de Linux para el cliente Steam y sus juegos en 2012. Desde entonces, mu...
Cómo descargar y jugar Sid Meier's Civilization VI en Linux
Introducción al juego Civilization 6 es una versión moderna del concepto clásico introducido en la serie de juegos Age of Empires. La idea era bastant...