Interrupciones, Flags y Registros

September 7, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Interrupciones, Flags y Registros...

Description

 

UNIVERSIDAD MARIANO GALVEZ INGENIERIA EN SISTEMAS ARQUITECTURA DE COMPUTADORAS ING. JORGE LUIS DE LEON

INTERRUPCIONES, BANDERAS (FLAGS) Y REGISTROS

NERY OSVALDO PEREZ DE LA CRUZ CARNET 0900-03-1171 GUATEMALA 12 DE OCTUBRE 2012

 

Interrupció n  Interrupció Interrupción (también conocida como interrupción de hardware o petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación. 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, etc.).

Funcionamiento del mecanismo de interrupciones Cada dispositivo que desea comunicarse con el procesador por medio de interrupciones debe tener asignada una línea única capaz de avisar al CPU que le requiere para una operación. Esta línea es la llamada IRQ ("Interrupt ReQuest", petición de interrupción). Las IRQ son líneas que llegan al controlador de interrupciones un componente de hardware dedicado a la gestión de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al procesador  principal. El controlador de interrupciones debe ser capaz de habilitar o inhibir  líneas de interrupción (operación llamada comúnmente enmascarar por la utilización de una máscara), y establecer prioridades entre las distintas

 

interrupciones habilitadas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al procesador principal. También puede darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina de tratamiento de una interrupción de mayor  prioridad a la que se estaba ejecutando. Sin embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o NMI. Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una única línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador  de interrupciones para averiguar cual IRQ hay que atender. A partir del número del IRQ busca en la tabla de vectores de interrupción la dirección de la rutina que debe llamar para atender una petición del dispositivo asociado a dicha IRQ. Las rutinas de interrupción generalmente toman un pequeño y orejon tiempo de ejecución. Pasos para el procesamiento de una IRQ: Terminar la ejecución de la instrucción de máquina en curso. Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la última instrucción. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service Routine (ISR)) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Tipos de interrupciones En este subapartado vamos a hacer una clasificación de las distintas clases de interrupciones que nos podemos encontrar atendiendo a la fuente que las produce. Por un lado distinguiremos si se producen por causas internas o externas al procesador y remarcaremos que este hecho está íntimamente ligado con que las interrupciones sean síncronas o asíncronas:

 

Interrupciones de hardware. Estas son asíncronas a la ejecución del procesador, es decir, se pueden producir en cualquier momento independientemente de lo que esté haciendo el CPU en ese momento. Las causas que lo producen son externas al procesador y a menudo suelen estar ligadas con distintos dispositivos de E/S.

Traps. Normalmente son causadas al realizarse operaciones no permitidas tales

como la división por 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.

Interrupciones por software. Las interrupciones por software son generadas por el programa en ejecución. Para generarla, existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción, suelen tener nemotécnicos tales como INT. Suelen ser de vital importancia ya que a partir de estas interrupciones se solicita al sistema operativo realizar determinadas funciones, para ello. Por ejemplo, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema.

 

Bandera (Flag)  En programación, bandera (flag) se refiere a uno o más bits que son usados usados para almacenar un valor binario o código que tiene un significado asignado.

Las banderas son generalmente encontradas como miembros de una estructura de datos definida (como una entrada en una base de datos) y el significado del valor contenido en una bandera generalmente será definido en relación a la estructura de datos a la que pertenece. En muchos casos, el valor binario de una bandera será para representar uno de varios posibles estados o categorías. En otros casos, los valores binarios podrían representar uno o más atributos en un campo de bit, generalmente relacionado a habilidades o permisos, como "puede ser escrito" o "puede ser eliminado". De todas maneras hay muchos otros posibles significados que pueden ser asignados a los valores en las banderas. Un uso común de banderas es para marcar o designar estructuras de datos para el procesamiento futuro.

Dentro de los microprocesadores y otros dispositivos lógicos, las banderas son generalmente usadas para controlar o indicar el estado intermedio o final o resultado de diferentes operaciones. Generalmente los microprocesadores tienen, por ejemplo, un registro de estados que está compuesto de banderas y las banderas son usadas para indicar varias condiciones postoperación, como cuando hay un desbordamiento aritmético. Las banderas pueden ser utilizadas en operaciones subsiguientes, como en instrucciones de salto de procesamiento condicional. En programación, la bandera o flag se refiere a uno o más bits que se utilizan para almacenar un valor binario o código que tiene asignado un significado. Las banderas normalmente forman parte de una determinada estructura de datos, como un registro de una base de datos, y el significado del valor que figura en una bandera típicamente se definirá en relación a la estructura de datos de la que forma parte. En muchos casos el valor binario de la bandera se entenderá como la representación de uno de los posibles estados. En otras ocasiones, los valores binarios pueden representar uno o más atributos de un campo de bits, a menudo relacionados con habilidades o permisos, como "se puede escribir" o "puede ser  borrado". De todos modos, hay muchos otros posibles significados que pueden

 

asignarse a los valores de la bandera. Un uso común de las banderas es marcar o designar estructuras de datos para un posterior tratamiento. Dentro de los microprocesadores y otros dispositivos lógicos, las banderas se utilizan mayoritariamente para controlar o indicar el estado intermedio o final o el resultado de diferentes operaciones. Por ejemplo, los microprocesadores suelen tener registro de estado se compone de varias de estasresultado banderasde queuna se usaránunpara indicar variasque condiciones establecidas como operación, como podría ser hacer notar que ha habido un desbordamiento en una operación aritmética. Una vez establecidas, las banderas pueden utilizarse en operaciones posteriores como el control de flujo en una operación de salto condicional. Por ejemplo, la instrucción en lenguaje ensamblador de Intel x86 je (salta si igual) comprobará el flag Z (cero) del registro de estado y si está establecido (por una operación anterior) ejecutará un salto a la dirección indicada.  A los diferentes diferentes parámetros de control control de una shell de línea línea de comandos comandos también se les suele llamar banderas. Estas shells utilizan un analizador sintáctico para traducir los parámetros pasados en banderas al uso de las vistas en este artículo.

Registró  En arquitectura de ordenadores, un registro es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador, que permite guardar  transitoriamente y acceder a valores muy usados, generalmente en operaciones matemáticas. Los registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida que tiene el sistema de almacenar datos. Los registros se miden generalmente por el número de bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits". Los registros generalmente se implementan en un banco de registros, pero antiguamente se usaban biestables individuales, memoria SRAM o formas aún más primitivas. El término es usado generalmente para referirse al grupo de registros que pueden ser directamente indexados como operandos de una instrucción, como está definido en el conjunto de instrucciones. Sin embargo, los microprocesadores tienen además muchos otros registros que son usados con un propósito específico, como el contador de programa. Por ejemplo, en la arquitectura IA32, el conjunto de instrucciones define 8 registros de 32 bits.

 

Tipos de registros 







Los registros de datos son usados para guardar números enteros. En algunas computadoras antiguas, existía un único registro donde se guardaba toda la información, llamado acumulador. Los registros de memoria son usados para guardar exclusivamente direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.

Los registros de propósito general (en inglés GPRs o General Purpose Registers) pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura de von Neumann. La mayor parte de las computadoras modernas usa GPR.

Los registros de coma flotante son usados para guardar datos en formato de coma flotante.



Los registros constantes tienen valores creados por hardware de sólo lectura. Por ejemplo, en MIPS el registro cero siempre vale 0.



Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila o el registro de estado.

 

Comentario Las interrupciones se utilizan por medio de dispositivos de entrada y salida a los cuales le llamamos interrupciones de hardware, cada vez que se hace una interrupción lo que sucede es que el procesador suspende el servicio que esta ejecutando y realiza la nueva tarea que se le envió por medio del dispositivo que estemos utilizando.

Las líneas de interrupción se manejan con un nivel de prioridad, las líneas con más prioridad interrumpen a las líneas con menos prioridad. Si existe un maestro de bus, solo el maestro puede crear las interrupciones. Como se describió en el trabajo las interrupciones puedes ser ocasionada por  interrupciones de hardware, interrupciones de software, por ejemplo una interrupción de hardware puede ser como cuando con el teclado presionamos Crtl + c, la cual genera una interrupción en el manejador del dispositivo y un ejemplo de interrupción ocasionada por software es cuando se producen errores en un proceso.

Las banderas o también conocidas como flags se utilizan mas en un sistema como es la estructura de datos en la cual se dejan marcas para hacer saltos en diferentes procesos o nos indican diferentes estados en los que puede estar un proceso.

Los registros pueden haber diferentes tipos como lo son los de datos, de memoria, propósito general, de coma flotante, constantes, propósito especifico, puede decirse que un registro es una memoria que nos permite guardar diferentes tipos de datos.

Los registros los puede usar el procesador ya que son el medio mas rápido que tiene el procesador para acceder a ellos, los registros su tamaño se puede medir  por la cantidad de bits que conforman el conjunto de los datos.

 

 

E-GRAFIA http://es.wikipedia.org/wiki/Interrupci%C3%B3n http://www.alegsa.com.ar/Dic/bandera.php http://es.wikipedia.org/wiki/Flag http://arqcompudianita.blogspot.com/2009/04/interrupciones.html http://es.wikipedia.org/wiki/Registro_(hardware) http://www.monografias.com/trabajos17/arquitectura-computadoras/arquitecturacomputadoras.shtml#regist

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF