An interrupt is triggered by a hardware event like a device becoming ready, and causes the currently running software to stop and an interrupt service routine (ISR) to start. This avoids the processor having to continuously poll devices for status changes. With interrupts, the processor can run other tasks while waiting for a device and be notified instantly by the interrupt when the device is ready. Interrupts improve efficiency over the programmed I/O approach of busy waiting and polling for status changes.