A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira."— Transcrição da apresentação:

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

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

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

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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

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

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

14 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

15 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

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

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

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

19 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

20 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

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

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

23 1

24 1

25 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

26 1 Tópicos Interrupts Exceptions Manipulando Interrupções e Exceções em HW Inicializando a IDT Manipulando Interrupções e Exceções em SW

27 1 Causas Exceções programming errors anomalous conditions Interrupções interval timers I/O devices


Carregar ppt "1 Interrupts and Exceptions Understanding the Linux Kernel Disciplina: Sistemas Operacionais Professor: Vitor Aluno: Isaac Veloso Nogueira."

Apresentações semelhantes


Anúncios Google