(1) An interrupt handler is executed in response an external interrupt in the kernel.
(2) An interrupt execution part in the corresponding device driver is executed in the kernel. The part sends data, which arrives when the interrupt occurs, to the corresponding user process.
(3) The process is preempted and processes the receiving data.