How CPU finds ISR and distinguishes between devices

Posted by ripunjay-tripathi-gmail-com on Stack Overflow See other posts from Stack Overflow or by ripunjay-tripathi-gmail-com
Published on 2010-04-10T02:21:43Z Indexed on 2010/04/10 2:23 UTC
Read the original article Hit count: 385

Filed under:
|
|
|

I should first share all what I know - and that is complete chaos. There are several different questions on the topic, so please don't get irritated :).

1) To find an ISR, CPU is provided with a interrupt number. In x86 machines (286/386 and above) there is a IVT with ISRs in it; each entry of 4 bytes in size. So we need to multiply interrupt number by 4 to find the ISR. So first bunch of questions is - I am completely confused in mechanism of CPU receiving the interrupt. To raise an interrupt, firstly device shall probe for IRQ - then what ? The interrupt number travels "on IRQ" towards CPU? I also read something like device putting ISR address on data bus ; whats that then ? What is the concept of devices overriding the ISR. Can somebody tell me few example devices where CPU polls for interrupts? And where does it finds ISR for them ?

2) If two devices share an IRQ (which is very much possible), how does CPU differs amongst them ? What if both devices raise an interrupt of same priority simultaneously. I got to know there will be masking of same type and low priority interrupts - but how this communication happens between CPU and device controller? I studied the role of PIC and APIC for this problem, but could not understand.

Thanks for reading. Thank you very much for answering.

© Stack Overflow or respective owner

Related posts about interrupts

Related posts about isr