OCSO - 2do año Prof. de Informática - CeRP SW - 2016
Foro abierto
¿Para qué sirven las llamadas al sistema (system calls)?
¿Para qué sirven las llamadas al sistema (system calls)?
Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado (generalmente es el núcleo), previamente especificado. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de bajo nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.
Son una interfaz, provista por el núcleo, para que los procesos de usuarios puedan acceder a los servicios que brinda el sistema operativo.
La llamada a un system call incluye las siguientes tareas:
– Cargar los parámetros en el lugar adecuado (stack o registros).
– Cargar el número de system call en algún registro específico (Ej: eax en Intel).
– Invocar a la interrupción por software (trap) adecuada (system call handler).
– El hardware cambia el bit de modo a monitor e invoca al manejador de la interrupción que controla que el número de system call pasado en el registro sea menor que el mayor del sistema y, finalmente, invoca al system call correspondiente.
– El valor retornado por el system call es puesto en un registro específico (Ej.: eax en Intel).
Los llamados al sistema (system calls) son una interfaz, provista por el núcleo, para que los procesos de usuarios accedan a los diferentes servicios que brinda el sistema operativo.
Cuando un proceso necesita un determinado servicio, hace una llamada el SO para que le brinde ese servicio y lo pueda utilizar. El SO habilita al proceso a ejecutarse en modo kernel por ese determinado tiempo y luego continúa en modo usuario.