Una llamada al sistema es una forma en que un programa de usuario interactúa con el sistema operativo. El programa solicita varios servicios y el sistema operativo responde invocando una serie de llamadas al sistema para satisfacer la solicitud. Una llamada al sistema se puede escribir en lenguaje ensamblador o en un lenguaje de alto nivel como C o Pascal . Las llamadas al sistema son funciones predefinidas que el sistema operativo puede invocar directamente si se utiliza un lenguaje de alto nivel.
En este artículo, aprenderá sobre las llamadas al sistema en el sistema operativo y analizará sus tipos y muchas otras cosas.
¿Qué es una llamada al sistema?
Una llamada al sistema es un método para que un programa informático solicite un servicio del núcleo del sistema operativo en el que se está ejecutando. Una llamada al sistema es un método para interactuar con el sistema operativo a través de programas. Una llamada al sistema es una solicitud del software de la computadora al núcleo de un sistema operativo.
El Interfaz del programa de aplicación (API) conecta las funciones del sistema operativo con los programas de usuario. Actúa como un vínculo entre el sistema operativo y un proceso, permitiendo que los programas a nivel de usuario soliciten servicios del sistema operativo. Solo se puede acceder al sistema kernel mediante llamadas al sistema. Las llamadas al sistema son necesarias para cualquier programa que utilice recursos.
¿Cómo se realizan las llamadas al sistema?
Cuando un software de computadora necesita acceder al kernel del sistema operativo, realiza una llamada al sistema. La llamada al sistema utiliza una API para exponer los servicios del sistema operativo a los programas del usuario. Es el único método para acceder al sistema del kernel. Todos los programas o procesos que requieren recursos para su ejecución deben utilizar llamadas al sistema, ya que sirven como interfaz entre el sistema operativo y los programas del usuario.
A continuación se muestran algunos ejemplos de cómo una llamada al sistema varía de una función de usuario.
que es un monitor
- Una función de llamada al sistema puede crear y utilizar procesos del kernel para ejecutar el procesamiento asincrónico.
- Una llamada al sistema tiene mayor autoridad que una subrutina estándar. Una llamada al sistema con privilegios en modo kernel se ejecuta en el dominio de protección del kernel.
- No se permite que las llamadas al sistema utilicen bibliotecas compartidas ni ningún símbolo que no esté presente en el dominio de protección del kernel.
- El código y los datos de las llamadas al sistema se almacenan en la memoria global del kernel.
¿Por qué necesitas llamadas al sistema en el sistema operativo?
Hay varias situaciones en las que debe requerir llamadas al sistema en el sistema operativo. Las siguientes situaciones son las siguientes:
- Es obligatorio cuando un sistema de archivos desea crear o eliminar un archivo.
- Las conexiones de red requieren que el sistema llame al envío y recepción de paquetes de datos.
- Si desea leer o escribir un archivo, necesita realizar llamadas al sistema.
- Si desea acceder a dispositivos de hardware, incluida una impresora o un escáner, necesita una llamada al sistema.
- Las llamadas al sistema se utilizan para crear y gestionar nuevos procesos.
Cómo funcionan las llamadas al sistema
Las Aplicaciones se ejecutan en un área de memoria conocida como espacio de usuario. Una llamada al sistema se conecta al kernel del sistema operativo, que se ejecuta en el espacio del kernel. Cuando una aplicación crea una llamada al sistema, primero debe obtener permiso del kernel. Lo logra mediante una solicitud de interrupción, que pausa el proceso actual y transfiere el control al kernel.
Si se permite la solicitud, el kernel realiza la acción solicitada, como crear o eliminar un archivo. Como entrada, la aplicación recibe la salida del kernel. La aplicación reanuda el procedimiento después de recibir la información. Cuando finaliza la operación, el kernel devuelve los resultados a la aplicación y luego mueve los datos del espacio del kernel al espacio del usuario en la memoria.
Una simple llamada al sistema puede tardar unos nanosegundos en proporcionar el resultado, como recuperar la fecha y hora del sistema. Una llamada al sistema más complicada, como conectarse a un dispositivo de red, puede tardar unos segundos. La mayoría de los sistemas operativos lanzan un hilo de kernel distinto para cada llamada al sistema para evitar cuellos de botella. Los sistemas operativos modernos son multiproceso, lo que significa que pueden manejar varias llamadas al sistema al mismo tiempo.
Tipos de llamadas al sistema
Generalmente existen cinco tipos de llamadas al sistema. Estos son los siguientes:
Ahora, aprenderá sobre los diferentes tipos de llamadas al sistema uno por uno.
Control de procesos
El control de procesos es la llamada al sistema que se utiliza para dirigir los procesos. Algunos ejemplos de control de procesos incluyen crear, cargar, abortar, finalizar, ejecutar, procesar, finalizar el proceso, etc.
Gestión de archivos
La administración de archivos es una llamada al sistema que se utiliza para manejar los archivos. Algunos ejemplos de administración de archivos incluyen crear archivos, eliminar archivos, abrir, cerrar, leer, escribir, etc.
monitor de tubo de rayos catódicos
Gestión de dispositivos
La administración de dispositivos es una llamada al sistema que se utiliza para tratar con dispositivos. Algunos ejemplos de administración de dispositivos incluyen lectura, dispositivo, escritura, obtención de atributos del dispositivo, liberación del dispositivo, etc.
Mantenimiento de la información
El mantenimiento de la información es una llamada al sistema que se utiliza para mantener la información. Hay algunos ejemplos de mantenimiento de información, incluida la obtención de datos del sistema, la configuración de hora o fecha, la obtención de hora o fecha, la configuración de datos del sistema, etc.
Comunicación
La comunicación es una llamada al sistema que se utiliza para la comunicación. Hay algunos ejemplos de comunicación, que incluyen crear, eliminar conexiones de comunicación, enviar, recibir mensajes, etc.
Ejemplos de llamadas al sistema Windows y Unix
Hay varios ejemplos de llamadas al sistema Windows y Unix. Estos son los que se enumeran a continuación en la tabla:
Proceso | ventanas | Unix |
---|---|---|
Control de procesos | Proceso de creación() Proceso de salida() EsperarObjetoÚnico() | Tenedor() Salida() Esperar() |
Manipulación de archivos | Crea un archivo() Leer archivo() Escribir archivo() Cerrar identificador() | Abierto() Leer() Escribir() Cerca() |
Gestión de dispositivos | Establecer modo consola() LeerConsola() Consola de escritura() | ioctl() Leer() Escribir() |
Mantenimiento de la información | Obtener ID de proceso actual() Establecer temporizador() Dormir() | Getpid() Alarma() Dormir() |
Comunicación | Creartubería() CrearAsignación de archivos() VistaMapaDeArchivo() | Tubo() Shmget() Mmap() |
Proteccion | Establecer seguridad de archivo() InicializarDescriptorDeSeguridad() Establecer grupo de descriptores de seguridad() | Mod() máscara() Chown() |
Aquí aprenderá brevemente sobre algunos métodos:
abierto()
El abierto() La llamada al sistema le permite acceder a un archivo en un sistema de archivos. Asigna recursos al archivo y proporciona un identificador al que puede hacer referencia el proceso. Muchos procesos pueden abrir un archivo a la vez o mediante un solo proceso. Todo se basa en el sistema de archivos y la estructura.
rhel vs centos
leer()
Se utiliza para obtener datos de un archivo en el sistema de archivos. Acepta tres argumentos en general:
- Un descriptor de archivo.
- Un búfer para almacenar datos leídos.
- El número de bytes que se leerán del archivo.
El descriptor de archivo del archivo a leer podría usarse para identificarlo y abrirlo usando abierto() antes de la lectura.
esperar()
En algunos sistemas, es posible que un proceso tenga que esperar a que otro proceso complete su ejecución antes de continuar. Cuando un proceso padre crea un proceso hijo, la ejecución del proceso padre se suspende hasta que finaliza el proceso hijo. El esperar() La llamada al sistema se utiliza para suspender el proceso principal. Una vez que el proceso hijo ha completado su ejecución, el control regresa al proceso padre.
escribir()
Se utiliza para escribir datos desde un búfer de usuario a un dispositivo como un archivo. Esta llamada al sistema es una forma en que un programa genera datos. Se necesitan tres argumentos en general:
- Un descriptor de archivo.
- Puntero al búfer en el que se guardan los datos.
- El número de bytes que se escribirán desde el búfer.
tenedor()
Los procesos generan clones de sí mismos usando el tenedor() llamada al sistema. Es una de las formas más comunes de crear procesos en los sistemas operativos. Cuando un proceso padre genera un proceso hijo, la ejecución del proceso padre se interrumpe hasta que se completa el proceso hijo. Una vez que el proceso hijo ha completado su ejecución, el control regresa al proceso padre.
cerca()
Se utiliza para finalizar el acceso al sistema de archivos. Cuando se invoca esta llamada al sistema, significa que el programa ya no requiere el archivo y los buffers se vacían, la información del archivo se modifica y, como resultado, los recursos del archivo se desasignan.
convención de nomenclatura de java
ejecutivo()
Cuando un archivo ejecutable reemplaza a un archivo ejecutable anterior en un proceso que ya se está ejecutando, se invoca esta función del sistema. Como no se construye un nuevo proceso, la identificación del proceso anterior permanece, pero el nuevo proceso reemplaza los datos, la pila, los datos, el encabezado, etc.
salida()
El salida() es una llamada al sistema que se utiliza para finalizar la ejecución del programa. Esta llamada indica que la ejecución del subproceso se ha completado, lo que resulta especialmente útil en entornos de subprocesos múltiples. El sistema operativo recupera los recursos gastados por el proceso después del uso del salida() función del sistema.