Como a cpu é interrompida pelo APIC e como lidar com interrupções compartilhadas?

0

Pelo pouco conhecimento que tenho, cada dispositivo PCI tem 4 pinos de interrupção. Pinos de muitos dispositivos PCI diferentes na placa-mãe (Dispositivos internos ou externos) são roteados para um IO-APIC (controlador de interrupção programável avançado) através de um roteador de interrupção programável. Então essa era a topologia.

Tanto quanto eu sei quando ocorre uma interrupção, o IO-APIC será sinalizado e ele irá elevar um INT para a CPU, em seguida, a mágica acontece e a CPU começa a executar uma ISR (Rotina de Serviço de Interrupção). O que foi essa mágica?

Qual é a comunicação que deve acontecer entre a CPU e o IO-APIC para lidar com o INT?

Quero dizer, como a CPU recebe o vetor de interrupção (é uma especial PCI ciclo de ônibus?) & o que acontecerá se o IRQ for compartilhado por muitos dispositivos (Take x86 Linux como uma referência de plataforma)?

    
por Karim Manaouil 24.06.2017 / 06:04

1 resposta

0

O vetor de interrupção já está armazenado na tabela de vetores de interrupção, portanto, a CPU não precisa obtê-lo de um periférico. Se a interrupção estiver associada a um IO-APIC ou dispositivo semelhante que possa gerar interrupções por motivos diferentes, o manipulador de interrupções consultará esse dispositivo para descobrir por que ele gerou a interrupção. Não há um ciclo de barramento especial para isso, da mesma forma que uma CPU obteria qualquer informação de um de seus periféricos.

    
por 24.06.2017 / 09:51

Tags