interrupções e excepções

19
weiss & wski Interrupções e/ou Exceções Eventos que provocam a alteração do fluxo normal de execução das instruções do programa em execução. Eventos Internos: 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.

Upload: ricardo-paulo-brzozowski

Post on 31-Jul-2015

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Interrupções e Excepções

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.

Page 2: Interrupções e Excepções

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

Page 3: Interrupções e Excepções

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.

Page 4: Interrupções e Excepções

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

Page 5: Interrupções e Excepções

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.

Page 6: Interrupções e Excepções

weiss & wski

Interrupção ouSub-rotina

Page 7: Interrupções e Excepções

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)

Page 8: Interrupções e Excepções

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

Page 9: Interrupções e Excepções

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.

Page 10: Interrupções e Excepções

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)

Page 11: Interrupções e Excepções

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.

Page 12: Interrupções e Excepções

weiss & wski

Interrupções na arquitetura Intel

Page 13: Interrupções e Excepções

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)

Page 14: Interrupções e Excepções

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

Page 15: Interrupções e Excepções

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

Page 16: Interrupções e Excepções

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

Page 17: Interrupções e Excepções

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.

Page 18: Interrupções e Excepções

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)

Page 19: Interrupções e Excepções

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.