Interrupção é um sinal emitido por hardware ou software quando um processo ou um evento necessita de atenção imediata. Ele alerta o processador para um processo de alta prioridade que requer a interrupção do processo de trabalho atual. Nos dispositivos de E/S uma das linhas de controle do barramento é dedicada para este propósito e é chamada de Rotina de Serviço de Interrupção (ISR).
Quando um dispositivo levanta uma interrupção, digamos processo i, o processador primeiro completa a execução da instrução i. Depois carrega o Contador de Programas (PC) com o endereço da primeira instrução da ISR. Antes de carregar o Contador de Programas com o endereço, o endereço da instrução interrompida é movido para um local temporário. Portanto, depois de manipular a interrupção o processador pode continuar com o processo i+1.
Apesar de manipular as interrupções o processador deve informar ao dispositivo que sua solicitação foi reconhecida para que ele pare de enviar o sinal de solicitação de interrupção. Além disso, ao salvar os registros para que o processo interrompido possa ser restaurado no futuro, aumenta o atraso entre o momento em que uma interrupção é recebida e o início da execução do ISR. Isto é chamado de Interrupt Lattency.
Hardware Interrupts:
Em uma interrupção de hardware, todos os dispositivos são conectados à Linha de Requisição de Interrupção. Uma única linha de requisição é usada para todos os n dispositivos. Para solicitar uma interrupção, um dispositivo fecha sua chave associada. Quando um dispositivo solicita uma interrupção, o valor de INTR é o OU lógico das solicitações de dispositivos individuais.
Sequência de eventos envolvidos no manuseio de um IRQ:
- Os dispositivos levantam um IRQ.
- O processador interrompe o programa que está sendo executado.
- O dispositivo é informado que sua solicitação foi reconhecida e o dispositivo desativa o sinal de solicitação.
- A acção solicitada é executada.
- Interrupção é activada e o programa interrompido é reiniciado.
A manipulação de múltiplos dispositivos:
Quando mais do que um dispositivo levanta um sinal de pedido de interrupção, então é necessária informação adicional para decidir qual o dispositivo a ser considerado primeiro. Os seguintes métodos são usados para decidir qual dispositivo selecionar: Sondagem, Interrupções Vectoriais e Aninhamento de Interrupção. Estes são explicados abaixo.
- Votação:
Na sondagem, o primeiro dispositivo encontrado com o conjunto de bits IRQ é o dispositivo que deve ser atendido primeiro. O ISR apropriado é chamado para fazer a manutenção do mesmo. É fácil de implementar, mas muito tempo é desperdiçado ao interrogar o bit IRQ de todos os dispositivos. - Interrupções Vetoriais:
Em interrupções vetoriais, um dispositivo solicitando uma interrupção se identifica diretamente ao enviar um código especial para o processador através do barramento. Isto permite ao processador identificar o dispositivo que gerou a interrupção. O código especial pode ser o endereço inicial do ISR ou onde o ISR está localizado na memória, e é chamado de vector de interrupção. - Nesting de Interrupção:
Neste método, o dispositivo de E/S está organizado em uma estrutura de prioridade. Portanto, o pedido de interrupção de um dispositivo de prioridade mais alta é reconhecido onde como pedido de um dispositivo de prioridade mais baixa não é. Para implementar isto cada processo/dispositivo (mesmo o processador). O processador aceita interrupções somente de dispositivos/processos com prioridade maior que ela.
A prioridade dos processadores é codificada em alguns bits de PS (Process Status register). Ela pode ser alterada pelas instruções do programa que escrevem no PS. O processador está em modo supervisionado apenas durante a execução das rotinas do SO. Ele muda para o modo usuário antes de executar programas de aplicação.
Leitor de presença! Não pare de aprender agora. Obtenha todos os conceitos importantes da Teoria CS para entrevistas da SDE com o Curso de Teoria CS a um preço amigável e fique pronto para a indústria.