Sistema de llamada vs Interrupción
Un procesador típico ejecuta las instrucciones una por una. Pero puede haber ocasiones en 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 reside en otro lugar). Después de hacer esto, el procesador vuelve a la ejecución normal y continúa desde donde se detuvo. Una llamada al sistema y una interrupción son tales 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 hablar con el sistema operativo. Cuando un programa necesita solicitar un servicio (para el que no tiene permiso) desde el núcleo 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 usar 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. Eventos como este se llaman interrupciones. Las interrupciones pueden ser causadas por fallas de software o hardware. Las interrupciones de hardware se llaman (simplemente) Interrupciones, mientras que las interrupciones de software se llaman Excepciones o Trampas. Una vez que se levanta 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 del 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 un 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 pulsación de una tecla en el teclado por parte del usuario, o el tiempo de espera de un temporizador de hardware interno puede provocar este tipo de interrupción e informar a la CPU que un determinado dispositivo necesita algo de atención. En una situación como esta, la CPU detendrá lo que estaba haciendo (es decir, detiene el programa actual), proporciona el servicio requerido por el dispositivo y regresará al programa normal.
¿Cuál es la diferencia entre la llamada del sistema y la interrupción??
La llamada al sistema es una llamada a una subrutina incorporada en el sistema, mientras que la interrupción es un evento, lo que hace que el procesador retenga temporalmente la ejecución actual. Sin embargo, una diferencia importante es que las llamadas al sistema son síncronas, mientras que las interrupciones no lo son. Eso significa que las llamadas al sistema ocurren en un tiempo fijo (generalmente determinado por el programador), pero las interrupciones pueden ocurrir en cualquier momento debido a un evento inesperado, como una pulsación de tecla en el teclado por parte del usuario. Por lo tanto, cuando se produce una llamada al sistema, el procesador solo tiene que recordar a dónde debe regresar, pero en caso de una interrupción, el procesador debe recordar el lugar al que debe regresar y el estado del sistema. A diferencia de una llamada del sistema, una interrupción generalmente no tiene nada que ver con el programa actual.