Publicado el 14 de Junio del 2019
664 visualizaciones desde el 14 de Junio del 2019
350,0 KB
15 paginas
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Interrupciones y entrada/salida
Departamento de Automática
Sistemas Operativos
Interrupciones y entrada/salida
1 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Índice
● Mapa de entrada/salida
Instrucciones IN/OUT
● El temporizador periódico
●
● Modo de operación
● El controlador de interrupciones
● Registros
● Habilitación de interrupciones
● Manejadores de interrupción
● Marco de interrupción
●
Procesamiento de una interrupción
● Ejercicios propuestos
Sistemas Operativos
Interrupciones y entrada/salida
2 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Instrucciones IN/OUT
Mapa de entrada/salida
Descripción general
● Mapa de registros de 16 bits de
los dispositivos hardware
● Cada registro tiene una
dirección fija de 16 bits
●
El acceso al mapa de registros se
realiza mediante instrucciones
específicas
MOV
IN / OUT
Sistemas Operativos
Interrupciones y entrada/salida
3 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Instrucciones IN/OUT
Instrucciones IN/OUT
Instrucción IN
●
●
●
Lee el valor de un registro de entrada/salida
La dirección del registro se obtiene del primer y único operando
El resultado se almacena siempre en el Registro A
Instrucción
privilegiada
●
El primer operando puede ser:
opcode
Operando
Ejemplo
135 (0x87)
REGISTER_16BITS
IN B
136 (0x88)
REGADDRESS
IN [C+100]
137 (0x89)
ADDRESS
IN [0x0300]
138 (0x8A)
WORD
IN 0x2
Sistemas Operativos
Interrupciones y entrada/salida
4 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Instrucciones IN/OUT
Instrucciones IN/OUT
Instrucción OUT
●
●
●
Escribe un valor en un registro de entrada/salida
La dirección del registro se obtiene del primer y único operando
El valor a escribir siempre se obtiene del Registro A
Instrucción
privilegiada
●
El primer operando puede ser:
opcode
Operando
Ejemplo
139 (0x8B)
REGISTER_16BITS
OUT C
140 (0x8C)
REGADDRESS
OUT [B+100]
141 (0x8D)
ADDRESS
OUT [0x0200]
142 (0x8E)
WORD
OUT 0x1
Sistemas Operativos
Interrupciones y entrada/salida
5 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Modo de operación
El temporizador periódico
Descripción general
Temporizador
(timer)
Controlador de
Interrupciones
Procesador
Bus de entrada/salida
●
●
●
●
Temporizador (timer) de 16 bits
Permite generar interrupciones periódicas
Implementa dos registros:
○
○
TMRPRELOAD: almacena el valor de pre-carga del contador
TMRCOUNTER: contiene el valor actual del contador
Inicialmente el temporizador está desactivado
Sistemas Operativos
Interrupciones y entrada/salida
6 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Modo de operación
Modo de operación
Timer Preload
Register
(TMRPRELOAD)
Cuenta inicial
Cuenta actual
Timer Counter
Register
(TMRCOUNTER)
1.
2.
Se escribe en el registro TMRPRELOAD el valor inicial de la cuenta
En el siguiente ciclo, se vuelca el valor de TMRPRELOAD en el
registro TMRCOUNTER
3. Cada ciclo de ejecución se decrementa en una unidad el valor de
TMRCOUNTER
4. Cuando el valor de TMRCOUNTER llega a 0 se dispara la interrupción
5.
En el siguiente ciclo se vuelve a cargar la cuenta inicial de
TMRPRELOAD en TMRCOUNTER
Sistemas Operativos
Interrupciones y entrada/salida
7 / 15
Probar el siguiente ejemplo:
MOV A, 20
OUT 3
HLT
A continuación, ir ejecutando paso a paso las instrucciones para ver cómo se
decrementa el valor del contador.
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Registros
Habilitación de interrupciones
El controlador de interrupciones
Descripción general
Teclado
numérico
Temporizador
(timer)
IRQ0
IRQ1
IRQ2
.
.
.
IRQ15
Controlador de
interrupciones
IRQ
Procesador
● Permite controlar hasta 16 fuentes de
interrupción
distintas
● Las fuentes se pueden habilitar (desenmascarar) o
deshabilitar (enmascarar) de forma independiente
Sistemas Operativos
Interrupciones y entrada/salida
8 / 15
La CPU tiene una única fuente de interrupción. El controlador de interrupciones es el
encargado de activar y desactivar la señal de interrupción general del procesador en
función del estado de las fuentes de interrupción. Cada fuente de interrupción propia
del control se puede habilitar o deshabilitar de forma independiente. Si se produce
una señal de interrupción por una de las fuentes del control, únicamente se
propagará hacia el procesador si la fuente correspondiente está habilitada.
Los términos desenmascarar y enmascarar son sinónimos de habilitar y deshabilitar
respectivamente.
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Registros
Habilitación de interrupciones
Registros del controlador de interrupciones
Interrupt Controller Mask Register (IRQMASK)
Interrupt
Controller Mask
Register
(IRQMASK)
Tim er
Teclado
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16 bits
El registro máscara del controlador de
interrupciones
(IRQMASK) permite habilitar y deshabilitar las fuentes de
interrupción:
●
●
Si el bit correspondiente a la fuente está a 1 ⇒ habilitada
Si el bit correspondiente a la fuente está a 0 ⇒ deshabilitada
Sistemas Operativos
Interrupciones y entrada/salida
9 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Registros
Habilitación de interrupciones
Registros del controlador de interrupciones
Interrupt Controller Status Register (IRQSTATUS)
Interrupt
Controller Status
Register
(IRQSTATUS)
Tim er
Teclado
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16 bits
● El registro de estado del controlador de
interrupciones
(IRQSTATUS) indica si una fuente de interrupción está activada:
○
○
Si el bit correspondiente a la fuente está a 1 ⇒ activada
Si el bit correspondiente a la fuente está a 0 ⇒ desactivada
● Es un registro de sólo lectura
● Para que se propague la interrupción, la fuente debe estar
activada y habilitada
Sistemas Operativos
Interrupciones y entrada/salida
10 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Registros
Habilitación de interrupciones
Registros del controlador de interrupciones
End of Interrupt Register (IRQEOI)
End of Interrupt
Register
(IRQEOI)
Tim er
Teclado
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16 bits
● El registro de fin de interrupción (IRQEOI) se emplea para
indicar al controlador que ya ha atendido la interrupción
● Es necesario escribir un 1 en el bit correspondiente a la
fuente para desactivar la interrupción
○
Si la interrupción queda correctamente desactivada, el bit
correspondiente del IRQSTATUS quedará a 0
Sistemas Operativos
Interrupciones y entrada/salida
11 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Registros
Habilitación de interrupciones
Habilitación de interrupciones
1.
Poner a 1 los bits del registro IRQMASK correspondientes a la/s
fuente/s que se desean habilitar
2. Habilitar las interrupciones en el procesador
➢ La CPU implementa dos instrucciones para habilitar y deshabilitar
las interrupciones de forma global
Instrucción STI
Habilita las interrupciones en el procesador
Instrucción CLI
Deshabilita las interrupciones en el procesador
Sistemas Operativos
Interrupciones y entrada/salida
12 / 15
Por ejemplo, para habilitar la interrupción del timer periódico habría que codificar las
siguientes instrucciones:
MOV A, 2
OUT 0
STI
El procesador siempre comienza con las interrupciones deshabilitadas.
El estado de las interrupciones se puede comprobar en el bit M (Interrupt Mask Bit)
del Registro de Estado.
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Marco de interrupción
Procesamiento de una interrupción
Manejadores de interrupción
Descripción general
● El manejador es la rutina que se ejecuta cuando se dispara
una interrupción
● Cuando se produce la interrupción, el procesador realiza
las siguientes operaciones:
Si la CPU estaba en modo usuario ⇒ modo supervisor
○
○ Guarda el marco de interrupción (interrupt frame)
○ Modifica el registro puntero de instrucción
Instruction
Pointer
Valor previo
0x0003
Sistemas Operativos
Interrupciones y entrada/salida
13 / 15
Mapa de entrada/salida
El temporizador periódico
El controlador de interrupciones
Manejadores de interrupción
Ejercicios propuestos
Descripción general
Marco de interrupción
Procesamiento de una interrupción
Marco de interrupción
El marco de interrupción contiene la información necesaria poder
retornar al estado previo al disparo:
●
●
○
○
○
El valor previo del puntero de instrucción
El valor previo del puntero de pila
El valor previo del registro de esta
Comentarios de: Interrupciones y entrada/salida (0)
No hay comentarios