Las llamadas al sistema son ligeramente diferentes de lo que sugiere su esquema de nombres.
Es una interfaz estándar mediante la cual los programas de usuario pueden interactuar con el Linux kernel para acceder a los recursos de forma segura.
Aún así, ¿suena complejo? Dejame explicar.
¿Cuáles son las llamadas del sistema en Linux
Cuando ejecuta una computadora, interactúa con varios programas que requieren recursos del sistema como la red, el sistema de archivos, la memoria y la CPU. ¡Y aquí es donde entra en juego el concepto de llamadas al sistema! Cuando un programa requiere un recurso del sistema, envía una solicitud de ese recurso al núcleo mediante una llamada al sistema.
Suponga que ejecuta un editor de texto para abrir un archivo y realizar cambios. Así que aquí, el editor de texto enviará llamadas al sistema comoopen()
,write()
yclose()
.
De hecho, cada Linux El comando y el programa realizan varios tipos de llamadas al sistema. Puedes verlos fácilmente con el comando strace.
strace linux_command
Eche un vistazo a cuántas llamadas al sistema hace un simple comando de eco:
Tipos de llamadas al sistema en Linux
Las llamadas al sistema se dividen en cinco categorías:
- Llamadas al sistema de gestión de procesos
- Llamadas al sistema de gestión de archivos
- Llamadas al sistema de administración de dispositivos
- Llamadas al sistema de gestión de red
- Llamadas al sistema de información del sistema
Si bien hay una gran cantidad de llamadas al sistema, analizaré brevemente lasllamadas más populares de cada categoría.
Así que empecemos con el primero.
1. Llamadas al sistema de gestión de procesos
Las llamadas al sistema de gestión de procesos proporcionan una forma de crear, gestionar y controlar los procesos. En palabras simples, la gestión de procesos es una forma de manejar múltiples procesos y juega un papel crucial en la multitarea.
Y estas son algunas llamadas comunes al sistema de gestión de procesos:
fork()
: como sugiere el nombre, esto crea un proceso secundario a partir del proceso principal que da como resultado exactamente el mismo proceso, excepto por algunos valores como PID y PID principal.exec()
: Esta llamada al sistema reemplaza la imagen del proceso actual con la nueva imagen y se usa cuando desea ejecutar un programa diferente del proceso actual.wait()
: Esta llamada al sistema espera a que el proceso secundario finalice y luego brinda información sobre el proceso secundario. el primo example de esto sería el estado de salida.exit()
: esta llamada al sistema finaliza el proceso actual y devuelve los recursos adquiridos por ese proceso (que finalizó recientemente) al sistema.
2. Llamadas al sistema de archivos
El sistema de archivos llama Linux facilita que otros programas interactúen con el sistema de archivos.
Estas son algunas de las llamadas al sistema populares:
open()
: Como sugiere el nombre, se utiliza para abrir el archivo.read()
: esta llamada al sistema se puede usar para leer datos de una amplia gama de tipos de datos, incluidos archivos normales y archivos especiales como tuberías y enchufes, y también puede leer archivos de dispositivos como/dev
directorio.write()
: Se utiliza para modificar archivos, generar archivos de registro, informes, etc.close()
: Esto cerrará el archivo y guardará los cambios en el disco (si corresponde).
3. Llamadas al sistema de red
Las llamadas al sistema de red se utilizan para gestionar redes, enviar/recibir datos, resolver direcciones de red, etc.
Y estas son algunas de las llamadas al sistema de red populares:
socket()
: esta llamada al sistema se utiliza para crear sockets que son puntos finales para la comunicación.bind()
: se utiliza para vincular un socket a la dirección y el puerto específicos de la red local.listen()
: se utiliza para marcar el socket como oyente pasivo para que pueda aceptar solicitudes entrantes de otros hosts.accept()
: Esta llamada al sistema se utiliza para aceptar la nueva solicitud de conexión entrante.connect()
: Establece la conexión con el punto final de la red externa.send()
: Como sugiere el nombre, se utiliza para enviar datos a través del socket.recv()
: Se utiliza para recibir datos a través del socket.
4. Llamadas al sistema de gestión de dispositivos
Las llamadas al sistema de administración de dispositivos se utilizan para administrar los dispositivos que están conectados a su sistema. En términos simples, las llamadas al sistema de administración de dispositivos proporcionan una forma de leer/escribir datos y controlar y configurar esos dispositivos.
Estas son algunas llamadas comunes al sistema de administración de dispositivos:
ioctl()
: Se utiliza para enviar comandos de control a los dispositivos conectados. ¡Piensa en ti controlando un brazo robótico usando una computadora! Sí, así es como se usa.
mmap()
: Se utiliza para mapear la partición de un archivo en la memoria del propio proceso. Esto da como resultado un acceso directo a los datos mapeados en la memoria como si fueran parte de la propia memoria del proceso.
Para examplesupongamos que desea procesar un archivo grande en un programa, por lo que en lugar de cargar un archivo completo, puede asignar una parte de un archivo, usarlo y luego desasignarlo.
5. Llamadas al sistema de información del sistema
Como sugiere el nombre, las llamadas al sistema de información del sistema se utilizan para obtener varios tipos de información, como los recursos del sistema, la hora del sistema, la configuración del sistema, etc.
Estas son algunas de las llamadas de información del sistema más utilizadas:
getpid()
: Obtiene el PID (ID de proceso) del proceso actual.getppid()
: Obtiene el PID principal del proceso actual.getuid()
: Obtendrá el UID (ID usado) del proceso actual.getgid()
: Obtendrá el GID (ID de grupo) del proceso actual.uname()
: esta llamada al sistema obtiene información sobre el nombre del sistema, la versión, la información de la versión y otra información relacionada con el sistema.sysinfo()
: Obtiene información general sobre el sistema que incluye memoria libre, memoria total, número de procesos actuales, etc.time()
: Obtiene la hora actual del sistema en segundos desde el 1 de enero de 1970.
Bastante básico pero crucial para que su sistema funcione. ¿no es así?
Su llamada en llamadas al sistema
Quizás se pregunte por qué el sistema necesita solicitar recursos en primer lugar.
Si sus aplicaciones pueden usar directamente el recurso del sistema, se generará una amenaza de seguridad significativa y conflictos en el sistema.
Y es la misma razón por la que no se recomienda utilizar Linux como root (siempre) y por qué necesita usar sudoque eleva los privilegios desde hace un tiempo.
Aquí hay algunas tomas interesantes de las llamadas al sistema que encontré en la web:
Y un buen recurso sobre el uso del comando strace:
Espero que ahora comprenda un poco mejor las llamadas al sistema.