Бывает, что для эффективного использования процессора одних прерываний недостаточно. Обратимся, например, к рис. 1.9,6 (см. Системные прерывания). Если время, которое требуется для выполнения операций ввода-вывода, намного больше, чем время работы фрагмента пользовательского кода, который находится между вызовами ввода-вывода (обычная ситуация), то большую часть времени процессор будет простаивать. Чтобы решить эту проблему, нужно позволить нескольким программам пользователя быть активными в одно и то же время.
Предположим, процессору нужно выполнить две программы. Одна из них, читающая данные из памяти и выводящая их на внешнее устройство, достаточно проста; другая программа — некое приложение, выполняющее сложные вычисления. Процессор может начать работу с программой вывода, сгенерировать команду записи на внешнее устройство, а затем перейти к вычислениям, требующимся для выполнения другого приложения. Если процессор работает с несколькими программами, то последовательность их выполнения зависит от относительного приоритета этих программ, а также от того, ожидают ли они завершения ввода-вывода. Если программа прервана с передачей управления обработчику прерываний, то после завершения обработки управление не обязательно сразу же передается программе пользователя, которая выполнялась до этого. Управление может быть передано какой-либо другой программе, которая находится в состоянии ожидания и обладает более высоким приоритетом. Прерванная программа пользователя возобновит работу, когда она будет обладать наиболее высоким приоритетом среди оставшихся программ. Эта концепция обработки нескольких программ, воплощенная на практике, называется многозадачностью и обсуждается в главе 2, "Обзор операционных систем".