A device generally uses interupts to tell the CPU that it is done doing whatever it was told to do and is ready for more, or when it receives data that the CPU needs to process. For example, a parallel or serial port or a NIC card all generate an interrupt when they have finished sending data, and also if data arrives at their port from outside. That's why sharing interrupts is difficult- if interrupts can be shared, the CPU has to figure out what device really needs attention- therefore it's unlikely that two different devices could share interrupts, although two devices controlled by the same driver may be able to. If your process just hangs when you try to access a device, it may very well be because the interrupt is wrong: the CPU expects the thing to interrupt on 9 for example) but it is actually set to 10- the CPU never knows to wake up the driver to process whatever happened.
Got something to add? Send me email.