1 / 27

Interrupts and Exceptions Understanding the Linux Kernel

Interrupts and Exceptions Understanding the Linux Kernel. Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira. Definição. Interrupção evento que altera a seqüência de instruções executadas por um processador tipos: síncronas assíncronas

berit
Download Presentation

Interrupts and Exceptions Understanding the Linux Kernel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Interrupts and ExceptionsUnderstanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira

  2. 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)

  3. Definição • Intel • síncrona: exceção • assíncrona: interrupção

  4. Tipos • Exceções • processor-detected exceptions • faults • traps • aborts • programmed exceptions • Interrupções • maskable interrupts • nonmaskable interrupts

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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…

  13. 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.

  14. 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

  15. 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

  16. 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.

  17. Interrupt handling • manipulando interrupções • I/O interrupts • timer interrupts • interprocessor interrupts

  18. 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( ) ]

  19. SW handling of interrupts and exceptions • Linux 2.4 usa três tipos de deferrable functions (funções adiáveis) • Softirq • Tasklet • Bottom Half

  20. 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

  21. Tasklet • para a maioria dos propósitos, tasklets são mais fáceis de serem escritos • tasklets são serializáveis

  22. 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)

  23. 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

  24. Tópicos • Interrupts • Exceptions • Manipulando Interrupções e Exceções em HW • Inicializando a IDT • Manipulando Interrupções e Exceções em SW

  25. Causas • Exceções • programming errors • anomalous conditions • Interrupções • interval timers • I/O devices

More Related