Interrupção: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Luckas-bot (discussão | contribs)
m Bot: Adicionando: uk:Переривання
Baaja (discussão | contribs)
Linha 5:
 
Interrupções permitem aos processadores modernos responder a eventos gerados por dispositivos enquanto outro trabalho está sendo realizado. Os processadores também oferecem instruções para permitir os processos dispararem ''interrupções de software'' (''traps''). Isso pode ser usado para implementar uma [[multitarefa cooperativa]].
 
==Resumo==
 
Interrupções de hardware foram introduzidas como forma de evitar o desperdício de tempo valioso do processador em [[polling loops]], a espera de eventos externos. Eles podem ser implementados no hardware como um sistema distinto, com linhas de controle, ou podem ser integrados no subsistema da memória.
Se implementado em hardware, um circuito controlador de interrupção, como o IBM PC’s [[Programmable Interrupt Controller|Controlador Programável de Interrupção]] (PIC), pode ser conectado entre o dispositivo de interrupção e o pino de interrupção do processador para várias fontes multiplexadoras de interrupção em uma ou duas linhas disponíveis da CPU. Se implementado como parte do [[controlador de memória]], as interrupções são mapeadas para dentro do sistema de [[Espaço de endereçamento|espaço de endereço de memória]].
Interrupções podem ser categorizadas em: '''maskable interrupt''', [[non-maskable interrupt]] '''(NMI)''', [[inter-processor interrupt]] '''(IPI)''', '''software interrupt''', e '''spurios interrupt'''.
* '''Maskable interrupt''' (IRQ): é uma interrupção de hardware que pode ser ignorada por configurar um bit em um registro da máscara de interrupção (IMR) bit-mask.
* '''[[Non-maskable interrupt]]''' (NMI): é uma interrupção de hardware que carece um bit-mask associado, então isto nuca pode ser ignorado. NMIs são frequentemente usados por timers, especialmente por [[watchdog timers]].
* '''[[Inter-processor Interrupt]]''' (IPI): é um caso especial que é gerado por um processador para interromper outro processador em um sistema de [[Multiprocessamento|multiprocessadores]].
* '''Software Interrupt''': é uma interrupção gerada dentro de um processador pela execução de uma instrução. Interrupções de software são frequentemente usadas para implementar chamadas de sistema porque elas implementam uma chamada de subrotina com a mudança de [[Ring (computer security)|nível da CPU]].
* '''Spurious Interrupt''': (interrupção falsa) é uma interrupção de hardware que é indesejável. Elas são tipicamente geradas por condições do sistema, tais como [[Electromagnetic interference|interferência elétrica] em uma linha de interrupção ou através de um hardware projetado incorretamente.
Os processadores têm tipicamente uma máscara interna de interrupção com o que permite o sotfware ignorar toda interrupção de hardware externo ao mesmo tempo que é definido. Esta máscara pode oferecer acesso mais rápido do que acessar o registro da máscara de interrupção (IMR) em um PIC, ou desabilitar as interrupções do próprio dispositivo. Em alguns casos, como a da arquitetura [[x86]], desabilitar e habilitar as interrupções no próprio processador, como uma barreira de memória, ele pode ser de fato mais lento.
Uma interrupção que deixa a máquina em um estado bem-definido é chamada de '''interrupção precisa'''. Como uma interrupção, tem 4 propriedades:
* O PC (Program Counter) é salvo em um lugar conhecido.
* Todas as instruções antes apontadas pelo PC tem total execução.
* Sem instruções além do apontado e que está sendo executado pelo PC (que não é proibido na instrução, além do PC, as mudanças feitas nos registros ou memórias devem ser desfeitas antes que a interrupção aconteça).
* O estado de execução da instrução apontada pelo PC é conhecida.
Uma interrupção que não atenda a esse requerimento é chamada de interrupção imprecisa.
O fenômeno em que o desempenho geral do sistema é severamente prejudicado pela quantidade escessiva de tempo de processamento gasto na manipulação da interrupção, é chamado de tempestade de interrupção (interrupt storm).
 
==Tipos de Interrupção==
 
===Nível Desencadeado (Level-Triggered)===
 
Essa interrupção é um classe de interrupções em que a presença de uma interrupção sem serviço é indicada por um nível alto (1), ou nível baixo (0), da linha de [[Pedido de interrupção|solução da interrupção]]. Um dispositivo deseja um sinal em uma linha de drives de interrupção e em seguida segue neste nível até a manutenção. Ele cessa afirmando a linha quando a CPU ordena que seja lida ou não a condição que fez o sinal de interrupção.
 
 
[[Categoria:Arquitetura de computadores]]