interrupções e excepções
TRANSCRIPT
weiss & wski
Interrupções e/ouExceções
Eventos que provocam a alteração do fluxo normal de execução das instruções do programa em execução.
EventosInternos: ocorrência de overflow, tentativa de
executar instrução não definida, chamada ao sistema de operação.
Externos: pedidos dos dispositivos de I/O.São Assíncronas
(relativamente ao processador) sem qualquer relação temporal fixa com este.
weiss & wski
MIPS, MotorolaExceçõesdesignam os eventos internos.Interrupções
designam os eventos externos.(pedidos dos dispositivos de I/O)
IntelInterrupções é a designação geral para eventos tanto internos como externos.
Chamadas do sistema: software interrupts ou traps
weiss & wski
I/O Programado
1. Processador envia ao periférico um comando de leitura.
2. Ler status do periférico.3. Status ready? No: goto 2.4. Ler informação do periférico.5. Escrever a informação lida na memória.
6. Fim? Não: goto 1.
weiss & wski
I/O sob interrupção (ex.:leitura)
1. Processador envia ao periférico um comando de leitura.
2. Processador executa outras tarefas.Periférico, quando termina execução do comando, gera interrupção. Processador (ISR – Interrupt Service Routine)
3. Verifica Status do periférico4. Lê informação do periférico5. Armazena a informação lida na memória6. Fim? Não: goto 1
weiss & wski
Processamento de umaInterrupção
Análogo a uma sub-rotina:Controle passa do programa que está
sendo executado para um outro que vai atender o pedido da interrupção.
(sub-rotina de tratamento da interrupção)(ISR - Interrupt Service Routine)
Diferença: a execução da ISR é desencadeada por um evento externo, não por uma instrução de solicitação de sub-rotina do programa em execução.
weiss & wski
Interrupção ouSub-rotina
weiss & wski
Processamento de umaInterrupção
1. Periférico gera interrupção (Request)2. Processador:.termina instrução que está sendo executada,.se as interrupções estiverem enabled reconhece o pedido (Acknowledge)
– sistema de interrupções é desativado. (disable)
– guarda contexto (PC, Flags,…)
– PC � endereço ISR(endereço de entrada da sub-rotina de tratamento da
interrupção)
weiss & wski
Processamento de Interrupção
Como obter o endereço de entrada da ISR?
2 possibilidades
Endereço único, comum a todas as interrupçõesa cargo do software (ISR ) identificar o periférico que gerou a interrupção.
Endereço determinado por hardwareperiférico que interrompeu identifica-se através de um vetor de interrupção que é lido pelo processador e utilizado por este para obter o endereço da ISR correspondente.
interrupções vetorizadas
weiss & wski
Processamento de Interrupção
Quando ocorrem em simultâneo vários pedidos de interrupção, qual a ordem de atendimento?
Necessário atribuir prioridade diferente a cada fonte de interrupções
Exigência
rapidez de processamentoSistemas Tempo Realinterrupções são eventos críticos que exigem garantias em termos de tempo de resposta máximo.
weiss & wski
Interrupções vetorizadas
Vetor de Interrupção identifica interrupção colocado na via de dados é usado pelo processador
para indexar uma tabela em memória que contém os endereços das sub-rotinas de tratamento de interrupções.
Tabela de interrupçãoA cada fonte de interrupção está associada uma
sub-rotina de tratamento específica.Intel: vetor de interrupção: 1 byteInterrupt Table (PC):endereços 0 .. 3FFh(256 entradas de 4 bytes) cada entrada contem CS e IP da ISR corresponde ao endereço ISR =
4*(Vetor de Interrupção)
weiss & wski
Interrupções na arquitetura Intel
(modo real)
Processador tem duas linhas de pedido de interrupção, com níveis de prioridade diferentes:
NMI –Non-Maskable Interrupt(não pode ser desativada) (prioridade máxima) – vetor de interrupção ( = 2)gerado internamente pelo processador.
INTR – pode ser desativada pela flag IF (interrupt flag):IF = 0 disabledIF = 1 enabled
PIC – Programmable Interrupt Controllerpossibilita que o sistema suporte múltiplas fontes de interrupção.
weiss & wski
Interrupções na arquitetura Intel
weiss & wski
Sequência de atendimento de Interrupção
1. Pedido de Interrupção detectado.2. Acknowledge da interrupção;
ler vetor de interrupção do via de dados(colocado no via de dados pelo PIC)
3. Colocar flags, CS e IP no pilha; interrupções automaticamente desativadas (flags IF e TF iguais a 0)quando salvamos os flags na pilha
4. Indexar a Tabela de Interrupções para ler os novos valores de CS:IP (salto para a ISR)
5. Executar ISR6. ISR termina com IRET (Interrupt Return) -
restaura os valores de IP, CS e PSW (retorno ao programa)
weiss & wski
Interrupt ServiceRoutine
Começa por salvar (na pilha) o conteúdo dos registradores que serão utilizados.(antes de entrar na ISR apenas foi salvo a informação mínima que permitiria retornar ao programa)
Antes de terminar recupera o conteúdo dos registradores.
Se durante a execução da ISR se quisermos permitir o atendimento de interrupções de prioridade mais elevada.É necessário colocar a flag IF = 1
– STI – instrução SeT Interrupt– CLI - instrução CLear Interrupt
weiss & wski
Múltiplas fontes de Interrupção
Podemos ter múltiplos periféricos com necessidade de interromper o processador.teclado,mouse, porta série, porta paralelo,controlador de disco, relógio de tempo real, ...
Temos que definir o que fazer quando há mais do que um pedido de interrupção em simultâneo:
Níveis de Prioridade
weiss & wski
Pedido de Interrupção
Processador com uma só linha de Int Reqlógica de arbitragem entre os pedidos do diferentes periféricos incorporada num componente externo:
PIC (Programmable Interrupt Controller)Intel – linhas de interrupção dos CPU
NMI – Non-Maskable Interrupt (input)Sempre ativa; vetor de interrupção 2
INTR – INTerrupt Request (input)Apenas ativa quando a flag IF = 1
INTA - INTerrupt Acknowledge (output) indica que o pedido de interrupção (INTR) foi reconhecido pelo CPU e que o vetor de interrupção pode ser colocado no Data Bus
weiss & wski
Controlador de Interrupções
(8259A)
8 linhas de pedidos de interrupção priorizadas (IR0, ..., IR7) – (8259A) ativa a sua saída INT(ligada à entrada INTR do microprocessador)sempre que uma dessas linhas, desde que corresponda a uma interrupção não “mascarada”, é colocada em 1 pelo periférico.
Quando recebe o INTA (Acnowledge)o (8259A) coloca nas suas saídas D0...D7(na via de dados) o vetor de interrupção correspondente ao pedidode mais alta prioridade pendente.
weiss & wski
Controlador de Interrupções
2X(8259A)
O sistema de Interrupções dos PC fornecem 15 linhas de interrupção:
IRQ0 – System TimerIRQ1 – Interface KeyboardIRQ4 – Porta Série 1IRQ6 – Controlador FloppyIRQ7 – Porta Paralelo 1IRQ8 – Relógio Tempo RealIRQ12 – Interface MouseIRQ14 – Controlador Disco
(disponível no bus ISA)IRQ10, IRQ11, IRQ15 – na via ISA
(para serem utilizados por outras interfaces)
weiss & wski
RECORDANDORECORDANDORECORDANDORECORDANDO
O PC tem 15 interrupções mascaradas e
mais uma interrupção não mascarada
usadas pelo hardware.
O resto dos vetores de interrupção são
usados por interrupção de software.
Atendimento a interrupções de software
(exceções) são chamadas quando ocorre
um erro em algum um resultado.
Por exemplo:o primeiro vetor de
interrupção guarda o endereço da
rotina que irá atender à divisão por
zero.
Quando uma divisão por zero ocorre o
microprocessador irá no endereço
0000:0000 buscará os 4 bytes
localizados a partir deste endereço e
irá executar a rotina definida por
este endereço.