O que é uma IRQ (solicitação de interrupção)?

18 de março de 2025

Uma solicitação de interrupção (IRQ) é um mecanismo usado por Hardwares dispositivos para chamar a atenção do processador.

o que é solicitação de interrupção

O que é uma IRQ (solicitação de interrupção)?

Uma solicitação de interrupção é um sinal acionado por hardware usado por dispositivos para interromper a execução normal das tarefas de um processador a fim de obter sua atenção e solicitar processamento imediato. Quando um dispositivo, como um teclado, placa de rede ou timer, precisa do CPU para lidar com uma tarefa específica — como processar entrada do usuário ou responder a uma transferência de dados — ele gera um IRQ. Este sinal de interrupção interrompe temporariamente as operações atuais sendo executadas pelo processador, permitindo que ele mude o foco e execute as instruções relacionadas à solicitação do dispositivo.

Uma vez que o processador conclui a tarefa associada à interrupção, ele retoma sua operação anterior. IRQs desempenham um papel crítico em habilitar multitarefa eficiente dentro de um sistema, pois permitem que dispositivos trabalhem de forma assíncrona sem ter que esperar que a CPU faça check-in com eles periodicamente. Ao lidar com essas interrupções prontamente, o sistema garante que os recursos sejam utilizados de forma otimizada, e os dispositivos podem operar sem bloquear ou paralisar a execução do processador.

Quais são os tipos de IRQ?

As solicitações de interrupção podem ser categorizadas com base em sua fonte e funcionalidade. Esses tipos garantem que o processador possa lidar eficientemente com várias tarefas. Os principais tipos de IRQs são:

  • Interrupções mascaráveis ​​(linhas IRQ). Essas são interrupções que podem ser ignoradas ou "mascaradas" pelo processador se ele estiver no meio da execução de tarefas de maior prioridade. Interrupções mascaráveis ​​são normalmente usadas por dispositivos não críticos, como teclados, placas de rede ou placas de som. A CPU pode desabilitar temporariamente essas interrupções, se necessário, permitindo que ela priorize tarefas mais urgentes.
  • Interrupções não mascaráveis ​​(NMI). Essas interrupções não podem ser desabilitadas ou ignoradas pelo processador, garantindo que erros críticos do sistema, como falhas de hardware ou erros de paridade de memória, sejam sempre resolvidos imediatamente. NMIs são normalmente usados ​​para detecção de erros e recuperação do sistema, garantindo que o sistema responda a eventos sérios sem demora.
  • Interrupções de software. Ao contrário das interrupções de hardware acionadas por dispositivos físicos, as interrupções de software são geradas por software ou sistema operativo. Essas interrupções permitem que programas solicitem serviços de sistema do sistema operacional, como acessar recursos de hardware ou interagir com outros componentes do sistema. Elas são comumente usadas em chamadas de sistema ou para executar tarefas específicas dentro do software.
  • Interrupções de hardware. Essas interrupções são geradas por dispositivos de hardware, como entrada/saída (I/O) dispositivos, temporizadores ou outros componentes periféricos. Interrupções de hardware sinalizam a CPU para executar ações específicas em resposta a dados recebidos ou a um evento ocorrendo. Por exemplo, uma impressora pode gerar uma interrupção de hardware quando termina de imprimir, notificando a CPU de que ela pode enviar mais dados.

Números de IRQ

Abaixo está uma tabela descrevendo os números de IRQ comuns e seus dispositivos ou funções associados em x86 sistemas de arquitetura:

Número IRQDispositivo/FunçãoDescrição
IRQ 0Temporizador do sistemaUsado pelo cronômetro do sistema para manter o tempo e agendar tarefas.
IRQ 1TecladoManipula eventos de entrada do teclado.
IRQ 2Cascade IRQ (controlador de interrupção secundária)Usado para estender o vetor de interrupção para linhas de IRQ adicionais.
IRQ 3Porta serial (COM2/COM4)Lida com interrupções para a segunda e quarta portas seriais (COM2/COM4).
IRQ 4Porta serial (COM1/COM3)Lida com interrupções para a primeira e terceira portas seriais (COM1/COM3).
IRQ 5Porta paralela (LPT2) ou placa de somPode ser usado para a segunda porta paralela (LPT2) ou para certas placas de som.
IRQ 6Controlador de disqueteLida com interrupções de controladores de disquete.
IRQ 7Porta paralela (LPT1)Usado para a primeira porta paralela (LPT1).
IRQ 8Relógio em tempo real (RTC)Gerencia as funções de relógio em tempo real e de cronometragem do sistema.
IRQ 9Interrupção aberta (geralmente disponível para dispositivos de usuário)Normalmente não utilizado em sistemas modernos, mas pode ser reconfigurado para vários dispositivos.
IRQ 10Disponível para dispositivos de usuárioA flexIRQ possível usado para periféricos como placas de rede ou controladores USB.
IRQ 11Disponível para dispositivos de usuárioFrequentemente usado por placas de rede ou outras placas de expansão.
IRQ 12PS / 2 RatoManipula eventos de entrada de um mouse PS/2.
IRQ 13Coprocessador (Processador Matemático)Usado pelo coprocessador matemático (se presente) para executar operações de ponto flutuante.
IRQ 14Controlador IDE primárioLida com interrupções para o controlador de disco rígido IDE primário.
IRQ 15Controlador IDE secundárioLida com interrupções para o controlador de disco rígido IDE secundário.

Recursos do IRQ

Os recursos de solicitação de interrupção são essenciais para habilitar a comunicação eficiente entre a CPU e os dispositivos de hardware em um sistema. Aqui estão alguns recursos principais dos IRQs:

  • Priorização. IRQs permitem que diferentes dispositivos de hardware sejam priorizados com base em sua urgência. Algumas interrupções são sensíveis ao tempo e precisam de processamento imediato, enquanto outras podem ser atrasadas ou "mascaradas". Essa priorização garante que as tarefas mais críticas, como falhas de hardware ou erros de sistema, sejam tratadas primeiro, sem atrasos desnecessários.
  • Máscara de interrupção. Mascaramento refere-se à capacidade da CPU de desabilitar temporariamente certas interrupções. Ao mascarar IRQs não críticos, o processador pode se concentrar em tarefas mais importantes. Esse recurso é útil para garantir que operações sensíveis ao tempo, como temporizadores do sistema ou tratamento de erros, não sejam interrompidas por processos menos urgentes, como entrada do usuário de um teclado ou mouse.
  • Multitarefa. IRQs permitem multitarefas permitindo que a CPU manipule múltiplas tarefas simultaneamente. Quando um dispositivo gera uma interrupção, ele sinaliza à CPU para interromper temporariamente sua tarefa atual e alternar para o manipulador de interrupção. Uma vez que a interrupção é processada, a CPU retoma sua tarefa anterior. Essa funcionalidade é crucial para sistemas operacionais modernos que precisam gerenciar múltiplos dispositivos e processos simultaneamente.
  • Interrupções de hardware e software. IRQs podem ser acionados por dispositivos de hardware ou processos de software. Interrupções de hardware são geradas por dispositivos externos, como teclados, placas de rede ou temporizadores, enquanto interrupções de software são iniciadas pelo sistema operacional ou aplicações para solicitar serviços específicos ou executar certas tarefas. Essa capacidade dupla garante que tanto eventos de hardware quanto solicitações de software sejam gerenciados de forma eficiente.
  • Atribuição de IRQ. Em sistemas tradicionais, cada IRQ é atribuído a um dispositivo ou função específica. Essa atribuição ajuda a CPU a distinguir entre diferentes interrupções e responder apropriadamente. Em sistemas modernos, os números de IRQ podem ser alocados dinamicamente por meio de mecanismos como a tabela de descritores de interrupção (IDT) ou controladores de interrupção programáveis ​​avançados (APIC), permitindo maior flexcapacidade de gerenciar fontes de interrupção.
  • Disparo de borda e disparo de nível. IRQs podem ser acionadas por borda ou por nível. Em interrupções acionadas por borda, a interrupção é acionada por uma mudança de estado (por exemplo, um sinal indo de baixo para alto), enquanto em interrupções acionadas por nível, a interrupção é acionada quando o sinal de interrupção permanece em um determinado estado por uma duração. O acionamento por borda é normalmente usado para operações sensíveis ao tempo, enquanto o acionamento por nível é usado quando uma condição sustentada precisa ser monitorada.
  • Interromper reconhecimento. Uma vez que uma interrupção é disparada, a CPU deve reconhecê-la para deixar o dispositivo saber que a interrupção foi reconhecida. Este processo de reconhecimento garante que o dispositivo não continue a gerar o sinal de interrupção desnecessariamente. Dependendo do sistema, o reconhecimento pode envolver a leitura de um registro específico ou o envio de um sinal para o dispositivo.
  • Rotinas de serviço de interrupção (ISRs). Quando ocorre uma interrupção, a CPU executa um pedaço específico de código conhecido como rotina de serviço de interrupção (ISR) para lidar com a interrupção. A ISR é responsável por processar a interrupção e executar as ações necessárias, como ler dados de um dispositivo ou limpar uma condição de erro. A ISR é projetada para ser o mais eficiente possível para minimizar atrasos na operação geral do sistema.

Como funciona um IRQ?

como funciona o irq

Veja como funcionam as IRQs:

  1. Interrompa a geração. Um dispositivo de hardware (como um teclado, placa de rede ou disco rígido) gera uma solicitação de interrupção quando precisa da atenção da CPU. Por exemplo, um teclado pode disparar um IRQ quando uma tecla é pressionada, ou uma placa de rede pode sinalizar um IRQ quando recebe dados.
  2. Sinal de interrupção enviado à CPU. Uma vez que a interrupção é gerada pelo dispositivo, ele envia um sinal de interrupção para a CPU. Este sinal é enviado por uma linha IRQ dedicada (como IRQ 0 a IRQ 15 no caso de sistemas x86).
  3. Detecção e priorização de interrupções. A CPU monitora constantemente as linhas de IRQ para solicitações de interrupção de entrada. Quando uma interrupção é detectada, a CPU verifica a prioridade da interrupção. Algumas IRQs são mais urgentes do que outras, e a CPU lida com interrupções de prioridade mais alta primeiro. Isso ajuda a gerenciar operações sensíveis ao tempo, como lidar com falhas de hardware, antes de tarefas menos críticas, como processar a entrada do usuário.
  4. Reconhecimento de interrupção. Após detectar a interrupção, a CPU a reconhece. Esse reconhecimento pode ser um sinal enviado de volta ao dispositivo de interrupção, informando que a interrupção foi recebida e será processada. Para certos tipos de IRQs, o dispositivo pode parar de gerar o sinal de interrupção depois que ele for reconhecido.
  5. Troca de contexto e execução de rotina de serviço de interrupção. A CPU suspende a tarefa atual (também conhecida como troca de contexto) e começa a executar um ISR associado à interrupção. O ISR é um pequeno bloco de código projetado para lidar com a interrupção, como ler dados de um dispositivo, limpar um sinalizador de erro ou processar um evento de entrada do usuário. O ISR é executado o mais rápido e eficientemente possível para minimizar a interrupção de outras tarefas da CPU.
  6. Retorne à operação normal. Uma vez que o ISR é concluído, a CPU restaura o contexto da tarefa interrompida e retoma o processamento normal. Se a interrupção foi tratada com sucesso, o dispositivo não precisa mais da atenção da CPU e a linha de interrupção é limpa.
  7. Mascarando interrupções. Em alguns casos, a CPU pode escolher mascarar ou ignorar certas interrupções temporariamente, especialmente se elas forem de baixa prioridade ou se a CPU estiver processando uma tarefa crítica. O mascaramento permite que o processador se concentre em operações mais importantes, sem ser interrompido por solicitações menos urgentes.
  8. Interrupções aninhadas. Em sistemas mais complexos, IRQs podem ser aninhados, o que significa que interrupções de prioridade mais alta podem antecipar as de prioridade mais baixa. Esse recurso garante que tarefas críticas sejam abordadas imediatamente, enquanto tarefas menos importantes são temporariamente suspensas.

Usos do IQR

As linhas de solicitação de interrupção são usadas para lidar eficientemente com interrupções de hardware e permitir uma comunicação suave entre a CPU e vários componentes de hardware. Aqui estão alguns usos comuns de IRQs:

  • Manipulando entrada do usuário. IRQs são usados ​​para gerenciar a entrada do usuário de dispositivos como teclados, mouses ou touchpads. Quando um usuário pressiona uma tecla no teclado ou clica no mouse, um IRQ é gerado para notificar a CPU para processar a entrada. Isso garante que a entrada desses dispositivos seja tratada prontamente sem interferir em outras tarefas.
  • Comunicação de dispositivos periféricos. Dispositivos periféricos como impressoras, placas de rede e placas de som dependem de IRQs para se comunicar com a CPU. Por exemplo, quando uma placa de rede recebe dados, ela dispara um IRQ para informar a CPU que novos dados estão disponíveis, permitindo que sejam processados ​​ou transmitidos posteriormente.
  • Temporizadores e relógios do sistema. IRQs são essenciais para gerenciar temporizadores e relógios do sistema. O temporizador do sistema usa IRQs para interromper periodicamente a CPU, garantindo cronometragem precisa e agendamento de tarefas. Por exemplo, IRQs são usados ​​para gerenciar alocação de fatias de tempo para multitarefa em sistemas operacionais, garantindo que cada processo obtenha uma parcela justa do tempo da CPU.
  • Gerenciamento e proteção de memória. Os sistemas de gerenciamento de memória em sistemas operacionais modernos usam IRQs para manipular operações relacionadas à memória, como falhas de página ou violações de acesso. Quando ocorre um erro de acesso à memória, um IRQ pode disparar a rotina de serviço de interrupção apropriada para manipular a exceção e proteger o sistema de falhas ou comprometimento de dados.
  • Detecção e tratamento de erros. Erros críticos, como falhas de hardware ou corrupção de memória, geralmente são tratados por meio de IRQs. Interrupções não mascaráveis ​​são um tipo específico de IRQ que não pode ser ignorado e são normalmente usadas para erros graves do sistema, como mau funcionamento de hardware, garantindo que a CPU os resolva imediatamente e prevenindo danos futuros.
  • Transferência de dados acionada por interrupção. Muitos dispositivos, como Discos rígidos ou interfaces de rede, use IRQs para transferência de dados acionada por interrupção. Quando os dados estiverem prontos para transmissão ou foi recebido, o dispositivo gera um IRQ para sinalizar à CPU para começar a processar os dados, minimizando o tempo ocioso da CPU e melhorando o desempenho geral do sistema.
  • Gerenciamento de energia. Os IRQs desempenham um papel fundamental no gerenciamento de energia do sistema. Por exemplo, dispositivos ou softwares de gerenciamento de energia podem usar IRQs para sinalizar quando o sistema deve entrar no modo de hibernação ou quando precisa acordar por um tarefa agendada. Isso permite que os sistemas economizem energia reduzindo a carga de trabalho na CPU durante períodos ociosos.
  • Multitarefa e agendamento de processos. IRQs são integrais à multitarefa em sistemas operacionais. Quando ocorre uma interrupção, ela pode antecipar a tarefa em execução no momento, permitindo que a CPU alterne entre processos. Esse mecanismo é usado por sistemas operacionais para implementar compartilhamento de tempo, garantindo que vários processos tenham a chance de executar sem intervenção manual.
  • Interrupções de dispositivos periféricos para processamento em tempo real. Certos sistemas em tempo real, como sistemas embarcados ou sistemas de controle industrial, usam IRQs para processar dados de sensores, atuadores ou outros periféricos em tempo real. Essas interrupções permitem que o sistema responda imediatamente a eventos externos, como alterações nas leituras dos sensores, garantindo ações oportunas.
  • Processamento de áudio e vídeo. IRQs são usados ​​em dispositivos de áudio e vídeo para lidar com fluxos de dados em tempo real. Por exemplo, placas de som usam IRQs para notificar a CPU quando estão prontas para transmitir ou receber dados de áudio, garantindo reprodução ou gravação suaves sem interrupções. Da mesma forma, placas de vídeo usam IRQs para sinalizar a disponibilidade de quadros de vídeo para renderização ou exibição.

Como configurar um IRQ?

Configurar IRQs normalmente envolve garantir que os dispositivos recebam números de interrupção apropriados e que não ocorram conflitos entre os dispositivos. Em sistemas modernos, a configuração de IRQ é frequentemente manipulada automaticamente pelo sistema operacional ou BIOS, que aloca dinamicamente números de IRQ para componentes de hardware.

No entanto, em sistemas mais antigos ou casos de uso específicos, os IRQs podem precisar ser configurados manualmente por meio do BIOS ou das configurações do sistema operacional. Isso envolve selecionar o número de IRQ correto para cada dispositivo, garantindo que nenhum dos dois dispositivos compartilhe a mesma linha de IRQ, o que pode causar conflitos.

Configurações avançadas, como habilitar ou desabilitar IRQs, ajustar a priorização de IRQ e usar controladores de interrupção (como APIC ou PIC), podem ser configuradas no BIOS ou por meio de drivers de dispositivo para otimizar o desempenho do sistema e o gerenciamento de recursos. Em alguns casos, os conflitos de IRQ podem ser resolvidos reatribuindo números de IRQ ou desabilitando dispositivos não utilizados para liberar linhas de interrupção.

Como otimizar um IRQ?

Otimizar a configuração de um IRQ envolve garantir um gerenciamento de interrupção eficiente para minimizar conflitos de recursos e melhorar o desempenho do sistema. É crucial garantir que nenhum dos dois dispositivos compartilhe a mesma linha de IRQ, pois os conflitos podem desacelerar ou interromper as operações do sistema.

Usar controladores de interrupção modernos como controladores de interrupção programáveis ​​avançados em vez de controladores de interrupção programáveis ​​(PIC) mais antigos ajuda a distribuir IRQs de forma mais eficaz entre vários processadores em sistemas multi-core. Além disso, habilitar o balanceamento de IRQ, priorizar interrupções de alta urgência e desabilitar dispositivos não utilizados ou desnecessários melhora ainda mais o desempenho.

Em alguns casos, o ajuste fino dos drivers de dispositivo e a garantia de que os dispositivos tenham IRQs apropriados atribuídos para seu uso (por exemplo, placas de rede, placas de som ou USB dispositivos) reduz a latência e otimiza a responsividade geral do sistema, especialmente em sistemas com altas demandas de E/S. Verificar regularmente conflitos de IRQ e ajustar a configuração garante que o sistema funcione sem problemas, sem atrasos excessivos causados ​​pelo tratamento de interrupções.

Benefícios do uso do IRQ

Ao usar IRQs, os dispositivos podem notificar a CPU quando precisam de atenção, o que otimiza o desempenho e a capacidade de resposta do sistema. Aqui estão os principais benefícios do uso de IRQs:

  • Multitarefa aprimorada. IRQs permitem que a CPU manipule múltiplas tarefas simultaneamente sem esperar que os dispositivos concluam suas ações. Ao permitir que os dispositivos interrompam a CPU quando necessário, o sistema processa tarefas como manipulação de entrada, transferência de dados ou detecção de erros sem esperar por um ciclo de polling específico, resultando em multitarefa mais eficiente.
  • Melhor desempenho do sistema. IRQs minimizam o tempo ocioso da CPU ao habilitar o processamento de dados acionado por interrupção. Quando um dispositivo aciona um IRQ, a CPU pode responder imediatamente à solicitação do dispositivo, permitindo que o sistema processe dados de forma mais rápida e eficiente, o que é particularmente benéfico em sistemas com atividade pesada de E/S.
  • Carga de CPU reduzida. Com IRQs, a CPU não precisa verificar constantemente o status dos dispositivos ou pesquisar eventos. Em vez disso, os dispositivos notificam a CPU quando precisam de atenção, o que reduz a carga de trabalho da CPU e permite que ela se concentre na execução de tarefas sem interrupções desnecessárias, levando a um melhor desempenho geral do sistema.
  • Eficiência de recursos. IRQs garantem que recursos como tempo de CPU e memória sejam usados ​​eficientemente. Ao alocar recursos somente quando necessário (ou seja, quando ocorre uma interrupção), o sistema previne ciclos desperdiçados e polling desnecessário, garantindo que cada dispositivo opere da maneira mais eficiente em termos de recursos.
  • Processamento em tempo real. Os IRQs são cruciais para sistemas que exigem respostas em tempo real, como processamento de áudio/vídeo, sistemas de controle industrial ou sistemas embarcados. Ao usar IRQs, esses sistemas podem responder imediatamente a eventos externos, como alterações nas leituras dos sensores ou entradas do usuário, garantindo um processamento preciso e oportuno.
  • Tratamento e recuperação de erros. IRQs são essenciais para lidar com erros de sistema ou falhas de hardware. Interrupções não mascaráveis ​​e outros tipos especiais de IRQ podem alertar a CPU sobre problemas críticos, permitindo que ela responda prontamente e tome ações corretivas, como interromper processos, registrar erros ou iniciar procedimentos de recuperação do sistema.

Desafios das IRQs

Embora as solicitações de interrupção sejam cruciais para a operação eficiente do sistema, seu uso pode apresentar vários desafios. Esses desafios surgem da complexidade de gerenciar interrupções em vários dispositivos e garantir que o sistema as lide sem conflitos ou ineficiências:

  • Mascaramento e priorização de IRQ. Enquanto o mascaramento de IRQ permite que certas interrupções sejam temporariamente ignoradas, o mascaramento impróprio pode impedir que interrupções importantes sejam processadas em tempo hábil. A priorização incorreta de interrupções também pode resultar em atrasos em tarefas críticas, levando à degradação do desempenho, especialmente em sistemas em tempo real.
  • Conflitos de IRQ. Quando dois ou mais dispositivos recebem o mesmo número de IRQ, isso leva a um conflito, fazendo com que a CPU não consiga priorizar ou lidar corretamente com as interrupções. Isso pode resultar em instabilidade do sistema, Perda de Dados, ou desempenho ruim. Resolver conflitos de IRQ pode ser demorado e frequentemente requer configuração manual ou realocação de IRQs.
  • Linhas de IRQ limitadas. Em sistemas mais antigos ou configurações de hardware legado, o número de linhas de IRQ disponíveis é limitado, levando à contenção de recursos entre dispositivos. À medida que mais periféricos são adicionados a um sistema, as linhas de IRQ disponíveis podem se esgotar, levando a conflitos ou à necessidade de compartilhar IRQs, o que pode degradar o desempenho do sistema.
  • Latência de interrupção. Quando vários dispositivos estão gerando interrupções, a CPU pode sofrer atrasos na resposta a interrupções de menor prioridade devido à maior prioridade de outras. Isso pode levar ao aumento da latência no tratamento de tarefas sensíveis ao tempo, afetando o processamento em tempo real ou levando a atrasos na comunicação periférica.
  • Complexidade em ambientes multitarefas. Em sistemas multi-core ou multiprocessadores, o tratamento de IRQ se torna mais complexo porque as interrupções precisam ser distribuídas entre várias CPUs ou núcleos. O balanceamento adequado de IRQ é necessário para garantir que nenhum processador único fique sobrecarregado por muitas interrupções, o que pode afetar o desempenho geral do sistema e a capacidade de resposta.
  • Sobrecarga de tratamento de interrupções. O processamento de interrupções requer que a CPU interrompa sua tarefa atual e execute um ISR. Se muitas interrupções ocorrerem ou se elas não forem gerenciadas de forma eficiente, isso pode levar a uma alta sobrecarga, reduzindo a capacidade do sistema de executar outras tarefas de forma eficaz.
  • Compatibilidade do driver do dispositivo. Alguns drivers de dispositivo mais antigos ou mal projetados podem não lidar com IRQs de forma eficiente ou podem causar conflitos com outros componentes do sistema. Garantir que os drivers de dispositivo estejam atualizados e sejam compatíveis com a configuração de IRQ do sistema é essencial para evitar problemas como travamentos, travamentos ou desempenho reduzido.

Anastasia
Spasojevic
Anastazija é uma redatora de conteúdo experiente, com conhecimento e paixão por cloud computação, tecnologia da informação e segurança online. No phoenixNAP, ela se concentra em responder a questões candentes sobre como garantir a robustez e a segurança dos dados para todos os participantes do cenário digital.