1 interrupts and exceptions understanding the linux kernel disciplina: sistemas operacionais...

27
1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Interrupts and Exceptions

Understanding the Linux Kernel

Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

Page 2: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Definição

Interrupção

evento que altera a seqüência de instruções executadas por um processador

tipos:

• síncronas • assíncronas

OBS: o código executado por um manipulador de interrupção ou exceção não é um processo. Trata-se de um caminho de controle do

kernel (kernel control path)

Page 3: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Definição

Intel

síncrona: exceção

assíncrona: interrupção

Page 4: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tipos

Exceções

processor-detected exceptions• faults• traps• aborts

programmed exceptions

Interrupções

maskable interrupts nonmaskable interrupts

Page 5: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tipos

Exceções

processor-detected exceptions:

geradas quando a CPU detecta uma condição anômala enquanto

executa uma instrução

• faults• traps• aborts

programmed exceptions

Page 6: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tipos

Exceções

faults

• o valor salvo do registrador eip é o endereço da instrução que executou causou o fault

• a instrução pode ser reexecutada após o tratamento da exceção

• após o tratamento da exceção, o programa pode continuar sua execução sem perda de continuidade

Page 7: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tipos

Exceções

traps

• um trap é disparado apenas quando não há necessidade de reexecutar a instrução que causou a exceção

• após o kernel retornar o controle ao programa, o mesmo pode continuar sua execução sem perda de continuidade a partir da próxima instrução

Page 8: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tipos

Exceções

aborts

• um erro sério ocorreu !

• a unidade de controle pode não conseguir salvar no registrador eip o local preciso da instrução que causou a exceção

• após o controle ser passado para o correspondente manipulador de exceção (abort exception handler), este não tem outra escolha a não ser forçar o processo afetado a terminar

Page 9: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tipos

Exceções

programmed exceptions:

ocorrem a partir da requisição do programador

• podem ser disparadas pelas instruções int, int3, into, bound

• as programmed exceptions são manipuladas pela unidade de controle como traps

• uso comum: implementar system calls e notificar um debugger sobre um evento específico

Page 10: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

IRQs and Interrupts

cada dispositivo de hardware capaz de emitir pedidos de interrupção tem uma linha de saída conhecida como IRQ (Interrupt ReQuest)

todas as linhas IRQ existentes são conectadas aos pinos de um circuito de hardware denominado Interrupt Controller, que executa as seguintes ações:

• 1: monitora as linhas de IRQ, checando os sinais• 2: caso um sinal seja percebido:

– converte o sinal recebido para um vetor correspondente– armazena o vetor em uma porta de I/O do Interrupt Controller,

permitindo assim que a CPU leia o vetor através do barramento de dados

– envia um sinal para o pino INTR do processador (emissão da interrupção)

– aguarda que a CPU reconheça o sinal da interrupção através da escrita em uma das portas de I/O dos PIC (Programmable Interrupt Controllers) - quando isto ocorre, o Interrupt Contoller limpa a linha INTR

• 3: volta ao passo 1

Page 11: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Exceptions

os microprocessadores 80x86 emitem cerca de 20 exceções diferentes

o kernel deve fornecer um exception handler dedicado para cada tipo de exceção

para algumas exceções, a CPU gera, também, um código de erro do hardware [hardware error code] e a empilha na pilha (Kernel Mode) antes de iniciar o exception handler

Page 12: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

IDT

IDT – Interrupt Descriptor Table

A IDT é uma tabela do sistema que associa cada vetor de interrupção ou exceção ao endereço do correspondente interrupt/exception handler

A IDT pode ter três tipos de descritores…

Page 13: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

IDT

os descritores são:

Task gate

Não utilizado pelo Linux.

Interrupt gate

Inclui o Segment Selector e o offset dentro do segmento de uma interrupt/

exception handler. Enquanto transfere o controle para o segmento apropriado, o

processador limpa a IF flag, desabilitando assim outras interrupções

mascaráveis.

Trap gate

Similar ao interrupt gate, exceto que enquanto transfere o controle para o

segmento apropriado, o processador não modifica a IF flag.

Page 14: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

HW handling of interrupts and exceptions

Nested execution of exception and interrupt handlers

Linux não permite o chaveamento de processos (process switch) enquanto a CPU está executando um kernel control path associado a uma interrupção

entretanto, tais kernel control paths podem ser interrompidos por outro interrupt handler gerando uma execução aninhada de kernel threads

Page 15: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Initializing the IDT

Inicializando a IDT

antes que o kernel habilite as interrupções, ele deve ler os endereços da IDT para o registrador idtr e inicializar todas as entradas da tabela

a inicialização da IDT deve ser realizada com cuidado a fim de bloquear interrupções e exceções ilegais simuladas por processos (User Mode) via instruções int

Page 16: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Exception handling

manipulando exceções

a maioria das exceções emitidas pela CPU são interpretadas pelo Linux como condições de erro.

quando uma exceção ocorre, o kernel envia um sinal ao processo que causou a exceção para notificá-lo de uma condição anômala.

Page 17: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Interrupt handling

manipulando interrupções

I/O interrupts

timer interrupts

interprocessor interrupts

Page 18: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Interrupt handling

todos os I/O interrupt handlers executam as mesmas quatro ações básicas:

1: salvar o valor do IRQ e os conteúdos dos registradores na pilha do Kernel

2: enviar um ack para o PIC que está servindo o IRQ, permitindo que ele possa emitir novas interrupções

3: executar as rotinas de serviço de interrupção (ISRs) associadas a todos os dispositivos que compartilham a IRQ

4: finalizar [salto para o endereço da função ret_from_intr( ) ]

Page 19: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

SW handling of interrupts and exceptions

Linux 2.4 usa três tipos de deferrable functions (funções adiáveis)

Softirq

Tasklet

Bottom Half

Page 20: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Softirq

função de baixa prioridade que permite ter sua execução adiada até que o kernel encontre uma oportunidade conveniente para executá-la

softirqs são alocadas estaticamente (por exemplo, em tempo de compilação)

softirqs não são serializáveis

Page 21: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tasklet

para a maioria dos propósitos, tasklets são mais fáceis de serem escritos

tasklets são serializáveis

Page 22: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Bottom Half

essencialmente, um bottom half é uma tasklet de alta prioridade

é esperado que os bottom halves não existam mais em futuras versões do Linux (substituição pelos tasklets)

Page 23: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Page 24: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Page 25: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tópicos

how IRQ give rise to interrupts• Interrupções e Exceções

how 80x86 processors handle interrupts and exceptions at the HW level• Nested execution of exception and interrupt

handlers how Linux initializes the data structures

requiered by the Intel interrupt architecture• Exception handling• Interrupt handling

how Linux handles interrupt signals at the SW level

Page 26: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Tópicos

Interrupts Exceptions

Manipulando Interrupções e Exceções em HW Inicializando a IDT Manipulando Interrupções e Exceções em SW

Page 27: 1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

1

Causas

Exceções

programming errors anomalous conditions

Interrupções

interval timers I/O devices