Synchronous: interrupt occurs as a result of current process, otherwise asynchronous. User requested: interrupt occurs because of direct result by user task, otherwise coerced. Maskable: if desired the interrupt can be disabled by a user task, otherwise unmasked.