In linux, The procedure of interrupts is divided by The Top half and The Bottom half.
- Top half
- mainly transfer data to repository for processing data like calling API with parameter in the programming.
- on example, network card received packet , and then will trigger proper interrupt after storing packet data at memory somewhere in the NIC.
- Uninterruptible by OS.
- Bottom half
- working .. working ..
- can be interruptible.
- ksoftirq calls when bottom half is too long to process queued other interrupts(the top half).
- You can see that ksoftirqd keep CPU high when the bottom half which run too long time is working .
(further) need to explain with kernel source.