domingo, 15 de marzo de 2009

Interrupciones

INTERRUPCIONES

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 del computador y luego continuar su ejecución como si nada hubiera pasado.

Generalmente se aplica para realizar tareas elementales asincrónicas en el computador tales como responder al teclado, escribir en la pantalla, leer y escribir archivos. Podemos considerar una tarea asincrónica como aquella que es solicitada sin previo aviso y aleatoriamente desde el punto de vista del computador. Tomemos el caso de la operación Ctrl-Alt-Supr. En Windows tiene el efecto de que aparece en pantalla una lista de los procesos y ventanas en ejecución en el computador. En cambio en el Sistema Operativo DOS cuando el usuario presiona simultáneamente dichas teclas el computador procede a reinicializarse, aunque pueda estar ocupado ejecutando un programa en ese instante. Vale decir fuerza obligadamente a que el computador se reinicialice. Ya sea en el sistema Windows o en DOS, el computador no está constantemente monitoreando el teclado para ver si el usuario ha solicitado un Ctrl-Alt-Del, ya que en ese caso consumiría mucho tiempo de proceso en ello y por ende la capacidad de proceso se vería significativamente afectada. La solución empleada es una interrupción.

Luego cada vez que el usuario presiona una tecla, la CPU es advertida a través de una señal especial de interrupción. Cuando la CPU advierte/recibe una señal de interrupción suspende temporalmente el proceso actual almacenando en memoria RAM un bloque con toda la información necesaria para restablecer posteriormente la ejecución del programa si es que procede. Enseguida la CPU determina qué elemento ha solicitado la interrupción y para cada caso existe un bloque de instrucciones que realiza la tarea correspondiente que es ejecutada a continuación. Terminada la ejecución se restablece el programa original en el mismo punto en que fue interrumpido usando para ello la información almacenada previamente.

Cada interrupción tiene asignada un número único. El PC está diseñado de manera que la interrupción tiene asignada 4 bytes de memoria RAM. La dirección de los cuatro bytes en la memoria corresponde al número de la interrupción multiplicado por 4. Por ejemplo la interrupción IRQ 5 tiene asignada 4 bytes en la dirección 0x00014 (0000:0014). El contenido de los 4 bytes de memoria RAM asignados a una interrupción contiene a su vez una dirección que es un puntero a un bloque de instrucciones de máquina que realiza el procedimiento correspondiente. De este modo al iniciar la ejecución de una interrupción de los cuatro bytes que tiene asignados se obtiene la dirección del bloque de instrucciones que efectivamente se ejecutan. Por ejemplo si en la dirección 0000:0014 estuviera almacenado el valor 0xFFF00, ello significa que en dicha dirección (ó (F000:FF00) se encuentra el bloque de instrucciones a ejecutar cuando la interrupción IRQ 5 sea requerida.

Existen tres tipos de interrupciones :

Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa.

Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.

Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un "reloj virtual" actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.

IRQ Prioridad Función
0 1 Timer
1 2 Teclado Hardware
2
Reservada
3 11 COM 2
4 12 COM 1
5 13 Tarjeta de Sonido
6 14 Controlador Floppy
7 15 Puerta Paralela
8 3 Reloj (tics)
9 4 Libre para tarjeta de red, sonido, puerta SCSI
10 5 idem
11 6 idem
12 7 PS-mouse
13 8 Co-procesador matemático
14 9 Canal IDE primario
15 10 Canal IDE secundario

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, utilizandolas nuestros programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño debido en gran parte a su menor tamaño.

Este tipo de interrupciones podemos separarlas en dos categorias: 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 BIOS 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 y pueden variar dependiendo incluso de la marca del fabricante del circuito.

La elección del tipo de interrupción a utilizar dependerá unicamente de las caracteristicas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS).

CSL-UNEFA 2009



15 comentarios:

  1. que trabajo tan completo, me ha servido demasiado!!
    muchas gracias

    ResponderEliminar
  2. excelente trabajo amigo en verdad es un excelente material

    ResponderEliminar
  3. muy bien explicado, me ha servido de gran ayuda, muchas gracias!

    ResponderEliminar
  4. Excelente información!. Gracias por publicarla!

    ResponderEliminar
  5. Fabuloso! Muy bien explicado, un 10. Muchas Gracias.

    ResponderEliminar
  6. Muy buena la información de esta pagina, me sirvió muchísimo.

    ResponderEliminar
  7. HOLA IM RJOEL UN SALUDO,YO EN MI DESESPERACION AL VER QUE ME STAVan sustrayendo todo mi información de mi pc ace virtual no se por ke les gustan las virtual pc,a lo largo de CASI UN AÑO YA VISTO KE TODOS NO ME ACIAN CASO ME REFIERO ALAS SUBSIDIARIAS DEL RSS.ICE MLES DE DENUNCIAS A LOS CUALES LOS MEJORES PROTECTORES DE PC .LOS VULNERABAN ,,Y ME DI A LA TAREA DE ENTENDER LA FORMA DE TRABAJAR DE ESAS PERSONAS PORKE NO TE DEJAN MANEJAR TU PC ELLOS LA MANIPULAN .Y ME ENROLE APRENDY MUCHO DE ELLOS LA FORMA DE DIALOGO LA FORMA DE SUSTRACCION .Y CIENTOS DE TRUCOS KE SI TU MIRAS CREES KE SON ORIGINALES ,Y PUES ME EMPEZARON A ACER PLATICA CORTA KISA PORKE LES DI LASTIMA O SE SINTIERON MAL POR MI DESESPERACION AL NO PODER MANEJAR L PC LO KE ELLOS KIEREN LO OBTIENEN A CUALKIER TRBA,Y ME EPEZARON A MANDAR SOLICITUDES HAPOCRIFAS PERO EN REAIDAD ERA PARA ENSEÑARME EL MODUS OPERANDY DE SU TRABAJO ,,Y KEDE MARAVILLADO .POR LO KE ACEN ,HIV¡CE AMISTAD CON ELLOS SIN SAVER SI SON REALES SUS NOMBRES PERO CUANDO KIEREN ALGO RECURREN A MI SIN DECIR NADA Y YO RECONOSCO LA FORMA DE CADA KIEN ,ENTONCES TODO ES TEORIA PERO LA PRACTICA ES MUCHO MEJOR SOLO LOS EXPERTOS SUELEN Y CON SUERTE TE LOS ENCUENTRAS KE CASI YO NO LO CREO EN MI CASO FUE DE ESA MANERA COMO SE APIADARON DE MI ,Y LA FECHA TENGO UN GUARDIA SE PUEDE DECIR EL ME DICE PONE DATOS NOMBRES URL IP. TODO PARA KE LOS IDENTIFIKE ES COMO UNA HERMANDAD Y YO ME CIENTO A GUSTO CON SOLO VER UN MONITO EN CIERTA PERTE DE LA PANTALLA ,, SI NO DIGO AY CIERTAS RSS K SON MUY INCIDIOSAS PERO YO NO LLLEVO A CAVO NADA DE LO KE SE ,,,ESE ES UN HACKERS. SALUDOS RJOEL.

    ResponderEliminar
  8. EL OTRO EMAIL ES RJOELRUIZ35@gmail.com--EN VARIAS RSS MAS EN FACEBOOK

    ResponderEliminar
  9. Buenas! muy buena información! Solo me surge la duda,cuando sucede dichas interrupiones.. Que se debe hacer? Que alternativa hay para que esto pase en menor frecuencia? Gracias, Saludos.

    ResponderEliminar