Многозадачность

 

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

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