Interrupciones Del Sistema

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.

Cuando al procesador le llega una interrupción, la atiende inmediatamente dejando de hacer lo que estuviera haciendo, para poder atenderla de la forma correcta, Una vez terminado el tratamiento de la interrupción, es muy importante que el procesador siga con lo que estaba haciendo, es importante que antes de tratar la interrupción se guarde de alguna forma el estado en que se encuentra la computadora, se pueden distinguir dos tipos de interrupciones: interrupciones software e interrupciones hardware; Las interrupciones software son provocadas por los programas usando una función especial del lenguaje.

Las interrupciones generadas por los dispositivos periféricos son generalmente asíncronas 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.

Las rutinas del Sistema de Operación llamadas manejadores de dispositivos usualmente manejan las interrupciones generadas por el dispositivo. Los Sistemas de Operación usan interrupciones pare implementar el tiempo compartido. Tienen un dispositivo llamado timer que genera una interrupción después de un intervalo específico de tiempo. Una señal o signal es la notificación por software de que un evento ocurrió. Por lo general es la respuesta del Sistema de Operación. Por ejemplo, ctrl-C genera una interrupción para el manejador de dispositivo que maneja el teclado.

  • Las interrupciones pueden ser producidas por Hardware o por Software
  • Las interrupciones por Hardware son producidas por un dispositivo y viajan por el mismo bus del sistema.
Las interrupciones por Software son producidas por medio de la ejecución de una operación especial que se conoce como "llamada al sistema" (system call) o por errores producidos dentro de un proceso, también conocidas como excepciones. Hay muchos tipos de interrupciones y para cada uno de estas existe una rutina en el sistema de operación que le da servicio.

Pasos durante una interrupción
El CPU suspende lo que estaba realizando. El hw transfiere el control al sistema de operación.

Deshabilita las interrupciones, mientras se atiende una interrupción no se puede atender otra que llegue,  el kernel del sistema de operación salva el estado actual del proceso interrumpido, transfiere su ejecución a una dirección fija, esta dirección por lo general contiene la dirección de comienzo donde la rutina de servicio de la interrupción se encuentra, cada diseño de computadora tiene su propio mecanismo de interrupciones.

Por lo general se maneja mediante un vector de interrupciones, indexado por el tipo de interrupción, en este vector se encuentra la dirección de comienzo de la rutina que da servicio a dicho tipo, se le conoce como vector de interrupción. Otra forma de localizar la rutina apropiada es mediante el pooling, es decir, preguntando a cada dispositivo para ver quien requirió el servicio.

  • Se ejecuta la rutina de interrupción
  • Se restaura el estado anterior
  • Se habilitan las interrupciones
La arquitectura de interrupciones debe también almacenar la dirección de la instrucción interrumpida.

Dentro de un computador
Cuando una computadora se encuentra realizando un proceso este puede interrumpirse por cualquiera de las dos causas siguientes:

1.- Que se haya presentado una causa que impida que siga adelante un trabajo o un programa   que no haya terminado:

En este caso las interrupciones pueden darse:
•       Por Software: quiere decir que la interrupción se hace por medio de una instrucción del Sistema operativo que demanda la detención del proceso o por una instrucción del programa mismo que demanda la acción de otro dispositivo.

•     Por Hardware: se refiere a interrupciones provocadas por la acción de algún elemento físico ya sea por una falla, por requerirlo el circuito, por falta de energía eléctrica  u otra causa que impida la continuación de un programa.

2.- Es que haya llegado el fin lógico de un programa o de un trabajo: en este caso el sistema operativo debe retirar el control al programa que ha terminado de introducir una nueva tarea.

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 qué acción debe realizar, este caso se da en general como resultado de una solicitud de E/S por parte de un proceso del usuario, una vez iniciada la E/S; luego al completarse la operación el control se devuelve al proceso del usuario, este caso se conoce como E/S sincrónica, pero existe otra posibilidad llamada E/S asíncrona que devuelve el control al programa del usuario sin esperar que se complete la E/S así esta puede continuar mientras se realizan otras operaciones del sistema.

Interrupciones de programa
Las interrupciones de software son provocadas por los programas usando una función especial del lenguaje, tienen como objetivo el que la CPU ejecute algún tipo de función, al terminar de ejecutarse esta función, se seguirá ejecutando el programa que provocó la interrupción.

Este tipo de interrupciones es la forma más importante que tendrán los programas de ejecutar funciones especiales del DOS (Disk Operating System) o del BIOS (Basic Input Output System). Las Interrupciones son principalmente subrutinas de la BIOS o el DOS que pueden ser llamadas por un programa, su función es controlar el hardware, servir de contacto entre los programas y las funciones del BIOS y del DOS.

Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT.

El uso de las interrupciones nos ayuda en la creación de programas, este tipo de interrupciones podemos separarlas en dos categorías: las interrupciones del sistema operativo DOS y las interrupciones del BIOS. La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del DOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la desventaja que, como son parte del hardware son muy específicas.

La elección del tipo de interrupción a utilizar dependerá únicamente de las características que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS)

No hay comentarios:

Publicar un comentario