Many interrupt controllers from today's processors use an interrupt vector to sort interrupts based on where it came from, among other ways. The vector typically contains the code that has to be run when the interrupt happens. ISRs are generally responsible for dealing with, or "servicing", the interrupt, along with keeping itself in working order. 