Понятие мультипрограммирования
Операционные системы, поддерживающие мульти-програм-мирование, в зависимости от выбранного критерия эффективности вычислительной системы можно разделить на несколько основных типов: системы пакетной обработки, системы разделения времени и системы реального времени. Некоторые операционные системы могут поддерживать одновременно несколько режимов, например часть задач может выполняться в режиме пакетной обработки, а часть – в режиме реального времени или в режиме разделения времени.
Мультипрограммирование в системах
Пакетной обработки
При использовании мультипрограммирования для повышения пропускной способности компьютера главная цель – минимизация простоев всех устройств компьютера, и в первую очередь центрального процессора. Простои в системе могут возникать по многим причинам. Наиболее часто выполняемая задача приостанавливается при ожидании ввода данных для обработки от пользователя, внешних устройств или каких-либо измерительных датчиков. При возникновении такого рода блокировки выполняемой задачи естественным решением, ведущим к повышению эффективности использования процессора, является переключение процессора на выполнение другой задачи, у которой есть данные для обработки. Такая концепция мультипрограммирования положена в основу так называемых пакетных систем.
Поскольку главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность, т.е. решение максимального числа задач в единицу времени, такие системы предназначались в основном для решения задач вычислительного характера, не требующих быстрого получения результатов.
Рациональный режим функционирования в системах пакетной обработки достигается благодаря использованию следующей схемы функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, т.е. множество одновременно выполняемых задач. Причем смесь строится таким образом, что одновременно должны выполняться задачи, предъявляющие разные требования к ресурсам с целью обеспечения сбалансированной загрузки всех устройств вычислительной машины. Например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом. Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, т.е. выбирается “выгодное” с точки зрения критерия эффективности системы задание. Следствием такой схемы организации мультипрограммирования в вычислительных системах, работающих под управлением пакетных ОС, является отсутствие гарантии выполнения какого-либо задания в течение определенного периода времени.
Рассмотрим более детально совмещение во времени операций ввода-вывода и вычислений.
Достигнуть описанного выше совмещения можно несколькими способами. Один из них характерен для компьютеров, имеющих специализированный процессор ввода-вывода. В компьютерах класса мэйнфреймов такие процессоры называют каналами. Как правило, канал имеет систему команд, отличающуюся от системы команд центрального процессора. Эти команды специально предназначены для управления внешними устройствами. Канальные программы могут храниться в той же оперативной памяти, что и программы центрального процессора. Однако в системе команд центрального процессора предусматривается специальная инструкция, с помощью которой каналу передаются параметры и указания на то, какую программу ввода-вывода он должен выполнить. Начиная с этого момента центральный процессор и канал могут работать параллельно (рис.1, а).
а
б
Рис. 1. Параллельное выполнение вычислений и операций ввода-вывода
Существует и другой способ совмещения вычислений с операциями ввода-вывода. Он реализован в компьютерах, управление внешними устройствами в которых осуществляется так называемыми контроллерами. Каждое внешнее устройство (или группа внешних устройств одного типа) имеет свой собственный контроллер, который автономно отрабатывает команды, поступающие от центрального процессора. При этом контроллер и центральный процессор работают асинхронно. Многие внешние устройства включают электромеханические узлы, вследствие чего контроллер выполняет свои команды управления устройствами существенно медленнее, чем центральный процессор свои. Именно это обстоятельство используется для организации параллельного выполнения вычислений и операций ввода-вывода: в промежутке между передачей команд контроллеру центральный процессор может выполнять вычисления (рис.1, б). Контроллер может сообщить центральному процессору о том, что он готов принять следующую команду, с помощью специального сигнала, либо центральный процессор узнает об этом, периодически опрашивая состояние контроллера.
Таким образом, для достижения максимальной эффективности решения задач операционной системой необходимо обеспечить наиболее возможное совмещение вычислений и ввода-вывода. Рассмотрим случай, когда процессор выполняет только одну задачу. В этой ситуации степень ускорения зависит от природы данной задачи и от того, насколько тщательно был выявлен возможный параллелизм при ее программировании. В задачах, в которых преобладают либо вычисления, либо ввод-вывод, ускорение почти отсутствует. Параллелизм в рамках одной задачи невозможен также, когда для продолжения вычислений необходимо полное завершение операции ввода-вывода, например, когда дальнейшие вычисления зависят от вводимых данных. В таких случаях неизбежны простои центрального процессора или канала.
Если же в системе выполняются одновременно несколько задач, появляется возможность совмещения вычислений одной задачи с вводом-выводом другой. Пока одна задача ожидает какого-либо события (заметим, что таким событием в мультипрограммной системе может быть не только завершение ввода-вывода, но и, например, наступление определенного момента времени, разблокирование файла или загрузка с диска недостающей страницы программы), процессор не простаивает, как это происходит при последовательном выполнении программ, а выполняет другую задачу.
Общее время выполнения смеси задач часто оказывается меньше, чем их суммарное время последовательного выполнения (рис.2, а). Впрочем, выполнение отдельной задачи в мультипрограммном режиме может занять больше времени, чем при монопольном выделении процессора этой задаче. Этот легко объясняется тем, что при совместном использовании процессора в системе могут возникать ситуации, когда задача готова выполняться, но процессор занят выполнением другой задачи. В таких случаях задача, завершившая ввод-вывод, готова выполняться, но вынуждена ждать освобождения процессора, что удлиняет срок ее выполнения. Так, из рис. 2 видно, что в однопрограммном режиме задача А выполняется за 6 единиц времени, а в мультипрограммном – за 7. Задача В также вместо 5 единиц времени выполняется за 6. Но зато время выполнения обеих задач в мультипрограммном режиме составляет всего 8 единиц, что на 3 единицы меньше, чем при последовательном выполнении.
Рис. 2. Время выполнения двух задач: а – в однопрограммной системе;
б – в мультипрограммной системе
В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит по инициативе самой активной задачи, например, когда она отказывается от процессора из-за необходимости выполнить операцию ввода-вывода. Поэтому существует высокая вероятность того, что одна задача может надолго занять процессор и выполнение интерактивных задач станет невозможным. Взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеру-оператору, а после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок повышает эффективность функционирования аппаратуры, но снижает эффективность работы пользователя.