Most modern microprocessors, including all the PC processors upon which Linux will run, can have their processing interrupted by an event which has a higher priority than the currently executing code.
These special events come in several 'flavors' but, collectively, they are known as interritpts and exceptions. In general, an interrupt is a hardware generated 'prod' to the processor, caused by some external event. These events include hard disk and floppy disk activity, as well as things like keyboard input and modem control activity. An exception, on the other hand, is generated in response to some types of system error and also in response to some special machine code instructions that can be executed in program code.
Whichever interrupt or exception is raised, the processor's response is quite similar. A special piece of code will be executed, called either the interrupt handler or the exception handler. Normally, there is a separate handler for each interrupt and exception type in use on a particular system.
The way this works is that each interrupt and exception type is given a unique number in the range 0 to 255. Whenever an interrupt or exception is raised, this number (called the vector number) is used as an index into an array of pointers (the interrupt and exception vector table). Each pointer in the table is the address of a routine which will be called in order to deal with its particular interrupt or exception type. Most interrupts and exceptions are treated like function calls, so that the interrupted code resumes from where it left off when the interrupt or exception handler finishes.