Llamada al sistema Linux en detalle

Una llamada al sistema es un procedimiento que proporciona la interfaz entre un proceso y el sistema operativo. Es la forma en que un programa de computadora solicita un servicio del kernel del sistema operativo.

Diferentes sistemas operativos ejecutan diferentes llamadas al sistema.

En Linux, realizar una llamada al sistema implica transferir el control del modo de usuario sin privilegios al modo de kernel privilegiado; los detalles de esta transferencia varían de una arquitectura a otra. Las bibliotecas se encargan de recopilar los argumentos de llamada al sistema y, si es necesario, organizar esos argumentos en la forma especial necesaria para realizar la llamada al sistema.

Las llamadas al sistema se dividen en 5 categorías principalmente:

  • Control de procesos
  • Gestión de archivos
  • Gestión de dispositivos
  • Mantenimiento de la información
  • Comunicación

Control de procesos :

Este sistema llama a realizar la tarea de creación de procesos, finalización de procesos, etc.

Las llamadas del sistema Linux bajo esto son fork() , exit() , exec().

  • tenedor()
    • La llamada al sistema fork() crea un nuevo proceso.
    • Se puede crear un nuevo proceso con fork() sin que se ejecute un nuevo programa; el nuevo subproceso simplemente continúa ejecutando exactamente el mismo programa que estaba ejecutando el primer proceso (principal).
    • Es una de las llamadas al sistema más utilizadas en la gestión de procesos.
  • salida()
    • La llamada al sistema exit() es utilizada por un programa para terminar su ejecución.
    • El sistema operativo recupera los recursos que utilizó el proceso después de la llamada al sistema exit().
  • ejecutivo()
    • Un nuevo programa comenzará a ejecutarse después de una llamada a exec()
    • Ejecutar un nuevo programa no requiere que primero se cree un nuevo proceso: cualquier proceso puede llamar a exec() en cualquier momento. El programa que se está ejecutando actualmente finaliza inmediatamente y el nuevo programa comienza a ejecutarse en el contexto del proceso existente.

Gestión de archivos :

Las llamadas al sistema de administración de archivos manejan trabajos de manipulación de archivos, como crear un archivo, leer y escribir, etc. Las llamadas al sistema Linux bajo esto son open(), read(), write(), close().

  • abierto():
    • Es la llamada al sistema para abrir un archivo.
    • Esta llamada al sistema solo abre el archivo, para realizar operaciones como lectura y escritura, necesitamos ejecutar diferentes llamadas al sistema para realizar las operaciones.
  • leer():
    • Esta llamada al sistema abre el archivo en modo de lectura
    • No podemos editar los archivos con esta llamada al sistema.
    • Múltiples procesos pueden ejecutar la llamada al sistema read() en el mismo archivo simultáneamente.
  • escribe():
    • Esta llamada al sistema abre el archivo en modo de escritura.
    • Podemos editar los archivos con esta llamada al sistema.
    • Múltiples procesos no pueden ejecutar la llamada del sistema write() en el mismo archivo simultáneamente.
  • cerca():
    • Esta llamada al sistema cierra el archivo abierto.

Gestión de dispositivos :

La administración de dispositivos hace el trabajo de manipulación de dispositivos, como leer de los búferes de los dispositivos, escribir en los búferes de los dispositivos, etc. Las llamadas del sistema Linux debajo de esto son ioctl().

  • ioctl():
    • ioctl() se conoce como control de entrada y salida.
    • ioctl es una llamada al sistema para operaciones de entrada/salida específicas del dispositivo y otras operaciones que no se pueden expresar mediante llamadas regulares al sistema.

Mantenimiento de la información:

Maneja la información y su transferencia entre el sistema operativo y el programa de usuario. Además, el sistema operativo mantiene la información sobre todos sus procesos y las llamadas al sistema se utilizan para acceder a esta información. Las llamadas al sistema bajo esto son getpid(), alarm(), sleep().

  • getpid():
    • getpid significa Obtener el ID del proceso.
    • La función getpid() devolverá el ID del proceso de llamada.
    • La función getpid() siempre tendrá éxito y no se reserva ningún valor de retorno para indicar un error.
  • alarma():
    • Esta llamada al sistema establece un reloj de alarma para la entrega de una señal que cuando tiene que ser alcanzado.
    • Organiza que se entregue una señal al proceso de llamada.
  • dormir():
    • Esta llamada al sistema suspende la ejecución del proceso que se está ejecutando actualmente durante un intervalo de tiempo
    • Mientras tanto, durante este intervalo, otro proceso tiene la oportunidad de ejecutar

Comunicación :

Estos tipos de llamadas al sistema se utilizan especialmente para las comunicaciones entre procesos.

Se utilizan dos modelos para la comunicación entre procesos.

  1. Paso de mensajes (los procesos intercambian mensajes entre sí)
  2. Memoria compartida (los procesos comparten región de memoria para comunicarse)

Las llamadas al sistema bajo esto son pipe(), shmget(), mmap().

  • tubo():
    • La llamada al sistema pipe() se usa para comunicarse entre diferentes procesos de Linux.
    • Se utiliza principalmente para la comunicación entre procesos.
    • La función del sistema pipe() se utiliza para abrir descriptores de archivos.
  • shmget():
    • shmget significa segmento de memoria compartida.
    • Se utiliza principalmente para la comunicación de memoria compartida.
    • Esta llamada al sistema se utiliza para acceder a la memoria compartida y acceder a los mensajes para comunicarse con el proceso.
  • mmap():
    • Esta llamada de función se utiliza para asignar o desasignar archivos o dispositivos en la memoria.
    • La llamada al sistema mmap() es responsable de mapear el contenido del archivo al espacio de memoria virtual del proceso.
       

Estas son las diversas llamadas al sistema involucradas en el sistema operativo LINUX.

Publicación traducida automáticamente

Artículo escrito por magichat y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *