I think some interrupts are generated by software, but here I focus on hardware interrupt handlers.
- pseudo-function — Each handler is like a pseudo-function containing a series of instructions that will run on a cpu core
- top priority — interrupt context is higher priority than kernel context or process context. You can say “interrupt” means “emergency”. Emergency vehicles don’t obey traffic rules.
- However, an interrupt handler “function” can get interrupted by another . The kernel somehow remembers the “stack”
- not preemptible — except the  scenario, kernel can’t suspend a hardware interrupt handler in mid-stream and put in another series of instructions in the “driver’s seat”
- no PID — since there’s no preemption, we don’t need a pid associated with this series of instructions.