jueves, 29 de agosto de 2013

Interrupciones y llamadas a servicios de sistema

Interrupciones y Llamadas a servicios de sistema

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la ejecución del programa.
Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación. La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo.
El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error.

Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente de la computadora y luego continuar su ejecución de manera normal y como si nada hubiera pasado.
Las interrupciones son un método del que disponen los dispositivos e incluso los procesos para hacer notar a la CPU la aparición de alguna circunstancia que requiera su intervención. De este modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la interrupción. Una vez atendida, seguirá con su labor anterior.
Cuando no existían interrupciones, era el procesador el que tenía que estar continuamente comprobando el estado del dispositivo cuando lo necesitaba. Todo ese tiempo que el procesador estaba sondeando el estado de los dispositivos era tiempo que no se podía dedicar a otros procesos, lo que significa esto una afectación al rendimiento.
Por todo ello se. Pensó que lo mejor era que existiera una línea especial entre el procesador y los dispositivos, por la que los dispositivos indicaban al procesador que ya estaban listos.

Interrupciones generadas por los dispositivos periféricos son generalmente asíncronos con respecto al programa que se está ejecutando. Un evento es asíncrono a una entidad si el momento cuando ocurre no está determinado por la entidad. Las interrupciones no siempre ocurren en el mismo punto dentro de la ejecución de un programa. En contraste, un evento de error como la división por cero es síncrono en el sentido de que siempre ocurre durante la ejecución de una instrucción particular si el mismo dato es presentado a la instrucción.


Pasos durante una interrupción
El CPU suspende lo que estaba realizando. El hw transfiere el control al sistema de operación.
Des habilita las interrupciones, mientras se atiende una interrupción no se puede atender otra que llegue, algunas arquitecturas con manejo de interrupciones sofisticadas permiten, mediante un esquema de prioridades, interrumpir un servicio de interrupción para atender otra de mayor prioridad, por lo que, aquellas interrupciones de menor o igual prioridad son des habilitadas. 

Interrupción de E/S
Con el fin de iniciar una operación de E/S la CPU carga los registros apropiados dentro del controlador del dispositivo, el controlador a su vez examina el contenido de estos registros para determinar que acción debe realizar, por ejemplo, si se encuentra una solicitud de lectura, el controlador iniciara la transferencia de datos del dispositivo a su buffer local, cuando haya terminado de hacer esto el controlador informara al CPU que ha completado su operación, esta comunicación se genera por medio de una interrupción.





No hay comentarios:

Publicar un comentario