Мультипрограммирование, или многозадачность (multitasking), — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти программы совместно используют не только процессор, но и другие ресурсы компьютера, оперативную и внешнюю память, устройства ввода-вывода, данные. Мультипрограммирование призвано повысить эффективность использования вычислительной системы, однако эффективность может пониматься по-разному. Наиболее характерными критериями эффективности вычислительных систем являются:
понятие мультипрограммирования. способы управления процессом в режиме
мульпрограммирования
тема 3 вопрос 10
Мультипрограммирование,
или многозадачность (multitasking), — это способ
организации вычислительного процесса, при котором на одном процессоре попеременно
выполняются сразу несколько программ. Эти программы совместно используют не только
процессор, но и другие ресурсы компьютера, оперативную и внешнюю память, устройства
вводавывода, данные. Мультипрограммирование призвано повысить эффективность
использования вычислительной системы, однако эффективность может пониматься по
разному. Наиболее характерными критериями эффективности вычислительных систем
являются:
∙ пропускная способность — количество задач, выполняемых вычислительной
системой в единицу времени;
∙ удобство работы пользователей, заключающееся, в частности, в том, что они
имеют возможность интерактивно работать одновременно с несколькими
приложениями на одной машине;
∙ реактивность системы — способность системы выдерживать заранее заданные
(возможно, очень короткие) интервалы времени между запуском программы и
получением результата.
В зависимости от выбранного критерия эффективности ОС делятся на системы
пакетной обработки, системы разделения времени и системы реального времени. Каждый
тип ОС имеет специфические внутренние механизмы и особые области применения.
Некоторые операционные системы могут поддерживать одновременно несколько режимов,
например часть задач может выполняться в режиме пакетной обработки, а часть — в
режиме реального времени или в режиме разделения времени.
Операционные системы, поддерживающие мультипрограммирование, в зависимости
от выбранного критерия эффективности вычислительной системы можно разделить на
несколько основных типов: системы пакетной обработки, системы разделения времени и
системы реального времени. Некоторые операционные системы могут поддерживать
одновременно несколько режимов, например часть задач может выполняться в режиме па
кетной обработки, а часть – в режиме реального времени или в режиме разделения
времени.
Мультипрограммирование в системах пакетной обработки
Рациональный режим функционирования в системах пакетной обработки достигается
благодаря использованию следующей схемы функционирования: в начале работы
формируется пакет заданий, каждое задание содержит требование к системным ресурсам;
из этого пакета заданий формируется мультипрограммная смесь, т.е. множество
одновременно выполняемых задач. Причем смесь строится таким образом, что
одновременно должны выполняться задачи, предъявляющие разные требования к ресурсам
с целью обеспечения сбалансированной загрузки всех устройств вычислительной машины.
Например, в мультипрограммной смеси желательно одновременное присутствие
вычислительных задач и задач с интенсивным вводомвыводом. Таким образом, выбор
нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в
системе, т.е. выбирается “выгодное” с точки зрения критерия эффективности системызадание. Следствием такой схемы организации мультипрограммирования в вычисли
тельных системах, работающих под управлением пакетных ОС, является отсутствие
гарантии выполнения какоголибо задания в течение определенного периода времени.
Рассмотрим более детально совмещение во времени операций вводавывода и
вычислений.
Достигнуть описанного выше совмещения можно несколькими способами. Один из них
характерен для компьютеров, имеющих специализированный процессор вводавывода. В
компьютерах класса мэйнфреймов такие процессоры называют каналами. Как правило,
канал имеет систему команд, отличающуюся от системы команд центрального процессора.
Эти команды специально предназначены для управления внешними устройствами. Ка
нальные программы могут храниться в той же оперативной памяти, что и программы
центрального процессора. Однако в системе команд центрального процессора
предусматривается специальная инструкция, с помощью которой каналу передаются
параметры и указания на то, какую программу вводавывода он должен выполнить.
Начиная с этого момента центральный процессор и канал могут работать параллельно.
Существует и другой способ совмещения вычислений с операциями вводавывода. Он
реализован в компьютерах, управление внешними устройствами в которых осуществляется
так называемыми контроллерами. Каждое внешнее устройство (или группа внешних
устройств одного типа) имеет свой собственный контроллер, который автономно
отрабатывает команды, поступающие от центрального процессора. При этом контроллер и
центральный процессор работают асинхронно. Многие внешние устройства включают
электромеханические узлы, вследствие чего контроллер выполняет свои команды
управления устройствами существенно медленнее, чем центральный процессор свои.
Именно это обстоятельство используется для организации параллельного выполнения
вычислений и операций вводавывода: в промежутке между передачей команд контроллеру
центральный процессор может выполнять вычисления (рис.1,б). Контроллер может
сообщить центральному процессору о том, что он готов принять следующую команду, с
помощью специального сигнала,
центральный процессор узнает об этом,
периодически опрашивая состояние контроллера.
либо
Таким образом, для достижения максимальной эффективности решения задач
операционной системой необходимо обеспечить наиболее возможное совмещение
вычислений и вводавывода. Рассмотрим случай, когда процессор выполняет только одну
задачу. В этой ситуации степень ускорения зависит от природы данной задачи и от того,
насколько тщательно был выявлен возможный параллелизм при ее программировании. В
задачах, в которых преобладают либо вычисления, либо вводвывод, ускорение почти
отсутствует. Параллелизм в рамках одной задачи невозможен также, когда для
продолжения вычислений необходимо полное завершение операции вводавывода,
например, когда дальнейшие вычисления зависят от вводимых данных. В таких случаях
неизбежны простои центрального процессора или канала.
В том случае, когда критерием эффективности работы системы является удобство
работы пользователя, то применяется другой способ мультипрограммирования –
разделения времени. В системах разделения времени пользователям (или одному
пользователю) предоставляется возможность интерактивной работы сразу с несколькими
приложениями. Для этого каждое приложение должно регулярно получать возможность
“общения” с пользователем. Понятно, что в пакетных системах возможности диалога
пользователя с приложением весьма ограничены.
В системах разделения времени эта проблема решается за счет того, что ОС
принудительно периодически приостанавливает приложения, не дожидаясь, когда они
добровольно освободят процессор. Всем приложениям попеременно выделяется квант
процессорного времени, вследствие чего пользователи, запустившие программы на
выполнение, получают возможность поддерживать с ними диалог.В системах разделения времени исправлен основной недостаток пакетной обработки –
изолированность пользователя от процесса выполнения его задач. Каждому пользователю в
этом случае предоставляется терминал, с которого он может вести диалог со своей
программой. Время ответа в таких системах оказывается вполне приемлемым для
пользователей, поскольку каждой задаче выделяется только квант процессорного времени,
а следовательно, ни одна задача не занимает процессор надолго. Конечно, время реакции
напрямую зависит от выбранного в системе кванта времени, выделяемого каждому
процессу. Если квант выбран достаточно небольшим, то у всех пользователей,
одновременно работающих на одной и той же машине, складывается впечатление, что
каждый из них единолично использует машину.
Одной из основных причин, по которой системы разделения времени обладают меньшей
пропускной способностью, чем системы пакетной обработки, является то, что на
выполнение принимается каждая запущенная пользователем задача, а не та, которая
“выгодна” ОС. Кроме того, производительность системы снижается изза возросших
накладных расходов вычислительной мощности на более частое переключение процессора
с задачи на задачу. Это вполне соответствует тому, что критерием эффективности систем
разделения времени является не максимальная пропускная способность, а удобство и
эффективность работы пользователя. Вместе с тем мультипрограммное выполнение
интерактивных приложений повышает и пропускную способность компьютера (пусть и не в
такой степени, как пакетные системы). Аппаратура загружается лучше, поскольку в то
время, пока одно приложение ждет сообщения пользователя, другие приложения могут
обрабатываться процессором. МУЛЬТИПРОГРАММИРОВАНИЕ В СИСТЕМАХ
РЕАЛЬНОГО ВРЕМЕНИ
Еще одна разновидность мультипрограммирования используется в системах
реального времени, предназначенных для управления с помощью компьютера
различными техническими объектами (например, станком, спутником, научной
экспериментальной установкой и т. д.) или технологическими процессами. Во
всех этих случаях существует предельно допустимое время, в течение которого
должна быть выполнена та или иная управляющая объектом программа. В
противном случае может произойти авария. Таким образом, критерием
эффективности здесь является время реакции системы. Требования ко времени
реакции зависят от специфики управляемого процесса. Контроллер робота
может требовать от встроенного компьютера ответ в течение менее 1 мс, в то
время как при моделировании полета может быть приемлем ответ в 40 мс.
В системах реального времени мультипрограммная смесь отличается от
рассмотренных ранее и представляет собой фиксированный набор заранее
разработанных программ, а выбор программы на выполнение осуществляется
исходя из текущего состояния объекта или в соответствии с расписанием
плановых работ.
Способность аппаратуры компьютера и ОС к быстрому ответу зависит в
основном от скорости переключения с одной задачи на другую. Время
переключения между задачами в системах реального времени часто определяет
требования к классу процессора даже при небольшой его загрузке.
В системах реального времени не стремятся максимально загружать все
устройства, наоборот, при проектировании программного управляющего
комплекса обычно закладывается некоторый "запас" вычислительной мощности
на случай пиковой нагрузки. Во многих ситуациях для систем управления
неприменимы статистические гипотезы о малой вероятности одновременного
возникновения большого количества независимых событий. Например, в системе
управления атомной электростанцией в случае возникновения крупной аварииатомного реактора многие аварийные датчики сработают одновременно и
создадут коррелированную нагрузку. Если система реального времени не
спроектирована для поддержки пиковой нагрузки, то может случиться так, что
система не справится с работой именно тогда, когда она нужна в наибольшей
степени.