As ações exatas que um controlador toma antes de interromper uma CPU dependem muito da arquitetura específica e do tipo de interrupção. No entanto, aqui está um colapso geral do que normalmente acontece:
1. Identifique a interrupção: *
Interrupção externa: O controlador recebe um sinal indicando um evento externo (por exemplo, uma tecla Press, um pacote de rede, uma expiração do timer).
*
Interrupção interna: Um evento interno na própria CPU aciona a interrupção (por exemplo, um erro dividido por zero).
2. Determine a prioridade de interrupção: * Alguns sistemas têm várias fontes de interrupção, cada uma com uma prioridade diferente. O controlador pode precisar comparar a prioridade da interrupção atual com as interrupções existentes.
* Se a nova interrupção tiver uma prioridade mais alta, ela será tratada imediatamente. Caso contrário, pode estar na fila para processamento posterior.
3. Salvar contexto (se necessário): * Se a interrupção for uma interrupção de hardware (de um dispositivo externo), o controlador pode precisar salvar o estado atual do dispositivo. Isso pode incluir:
*
registradores de status do dispositivo: Dados sobre a operação atual do dispositivo.
*
Solicitação de interrupção (IRQ) Linha: A linha que desencadeou a interrupção.
4. Gerar sinal de interrupção: * O controlador envia um sinal especial para a CPU, indicando que ocorreu uma interrupção. Esse sinal é normalmente uma linha dedicada no barramento do sistema.
5. Prepare -se para o manuseio de interrupções: * O controlador pode executar algumas tarefas de configuração antes que a CPU responda à interrupção. Isso pode incluir:
*
Configuração de vetores de interrupção: Esses vetores apontam para locais de memória específicos que contêm código que lida com a interrupção.
*
Preparando dados para o manipulador de interrupção: O controlador pode transferir dados relacionados à interrupção para locais de memória específicos.
6. Aguarde a resposta da CPU: * O controlador aguarda a CPU reconhecer a interrupção e começar a lidar com isso. Isso pode envolver a CPU verificando a linha de interrupção ou aguardando um sinal de interrupção específico.
Notas importantes: *
Resposta da CPU: Depois que a CPU reconhecer a interrupção, ela mudará para uma rotina de manipulador de interrupção especial. Essa rotina determinará a fonte da interrupção e tomará as medidas apropriadas.
*
Manuseio de interrupção: O manipulador de interrupção pode ler dados do controlador, processar o evento e enviar de volta uma resposta.
*
INTERRUPTO DESABLING: A CPU pode desativar temporariamente as interrupções se estiver no meio de uma operação crítica. Isso impede que interrupções inesperadas interrompem sua tarefa atual.
As etapas e ações específicas envolvidas no manuseio de interrupções podem ser complexas e variam muito, dependendo da arquitetura do sistema. As informações acima fornecem uma visão geral das etapas comuns.