Llamada al sistema vs interrupción
Un procesador típico ejecuta las instrucciones una por una. Pero puede haber ocasiones en las que el procesador tenga que detenerse temporalmente y mantener la instrucción actual y ejecutar algún otro programa o segmento de código (que resida en otro lugar). Después de hacer esto, el procesador vuelve a la ejecución normal y continúa desde donde lo dejó. Una llamada al sistema y una interrupción son esas ocasiones. Una llamada al sistema es una llamada a una subrutina integrada en el sistema. Una interrupción es una interrupción del control del programa causada por eventos de hardware externos.
¿Qué es una llamada al sistema?
Las llamadas al sistema proporcionan a los programas que se ejecutan en la computadora una interfaz para comunicarse con el sistema operativo. Cuando un programa necesita solicitar un servicio (para el cual no tiene permiso en sí mismo) del kernel del sistema operativo, utiliza una llamada al sistema. Los procesos de nivel de usuario no tienen los mismos permisos que los procesos que interactúan directamente con el sistema operativo. Por ejemplo, para comunicarse con un dispositivo de E / S externo o para interactuar con cualquier otro proceso, un programa tiene que utilizar llamadas al sistema.
¿Qué es una interrupción?
Durante la ejecución normal de un programa de computadora, puede haber eventos que pueden hacer que la CPU se detenga temporalmente. Los eventos como este se denominan interrupciones. Las interrupciones pueden deberse a fallas de software o hardware. Las interrupciones de hardware se denominan (simplemente) interrupciones, mientras que las interrupciones de software se denominan excepciones o trampas. Una vez que se genera una interrupción (software o hardware), el control se transfiere a una subrutina especial llamada ISR (Rutina de servicio de interrupción) que puede manejar las condiciones que genera la interrupción.
Como se mencionó anteriormente, el término Interrupción generalmente se reserva para interrupciones de hardware. Son interrupciones de control del programa causadas por eventos de hardware externos. Aquí, medios externos externos a la CPU. Las interrupciones de hardware generalmente provienen de muchas fuentes diferentes, como chip temporizador, dispositivos periféricos (teclados, mouse, etc.), puertos de E / S (serie, paralelo, etc.), unidades de disco, reloj CMOS, tarjetas de expansión (tarjeta de sonido, video tarjeta, etc.). Eso significa que las interrupciones de hardware casi nunca ocurren debido a algún evento relacionado con el programa en ejecución. Por ejemplo, un evento como la presión de una tecla en el teclado por parte del usuario, o un temporizador de hardware interno puede generar este tipo de interrupción y puede informar a la CPU que un determinado dispositivo necesita atención. En una situación como esa, la CPU detendrá lo que esté haciendo (es decir, pausa el programa actual),proporciona el servicio requerido por el dispositivo y volverá al programa normal.
¿Cuál es la diferencia entre llamada al sistema e interrupción?
La llamada al sistema es una llamada a una subrutina integrada en el sistema, mientras que la interrupción es un evento, que hace que el procesador detenga temporalmente la ejecución actual. Sin embargo, una gran diferencia es que las llamadas al sistema son sincrónicas, mientras que las interrupciones no lo son. Eso significa que las llamadas al sistema ocurren en un momento fijo (generalmente determinado por el programador), pero las interrupciones pueden ocurrir en cualquier momento debido a un evento inesperado, como la presión de una tecla en el teclado por parte del usuario. Por lo tanto, cada vez que se produce una llamada al sistema, el procesador solo tiene que recordar a dónde volver, pero en caso de una interrupción, el procesador debe recordar tanto el lugar al que volver como el estado del sistema. A diferencia de una llamada al sistema, una interrupción generalmente no tiene nada que ver con el programa actual.