Это самый простой режим, при котором ЭВМ передается полностью со всеми ресурсами одному пользователю. В таком режиме работали ЭВМ 1-го поколения. В них пользователь сам осуществлял операции ввода-вывода, производил отладку и запуск задачи, следил за ходом ее решения. Режим, удобный для программиста, - машина всегда в его распоряжении, он работает в диалоге с ней. Неудобство - чрезвычайно низкий коэффициент использования оборудования. Компромисс был найден позднее в больших машинах введением режима разделения времени.
В настоящее время монопольный режим вновь нашел применение в персональных ЭВМ, но он существенно отличается от монопольного режима работы машин 1-го поколения. Пользователь на персональной ЭВМ действительно один, но в помощь ему работает целая операционная система с большим набором сервисных и прикладных задач. Все управление работой ВС осуществляется пользователем через ОС, о всех ситуациях, требующих его вмешательства, пользователь получает сведения не непосредственно от источника, вызвавшего эту ситуацию, а от ОС, которая уже произвела анализ и, как правило, предлагает пользователю альтернативу дальнейших действий.
Наличие в ВС помимо ЦП периферийных и специальных процессоров, расслоение ОЗУ на отдельные независимо работающие блоки, развитая система прерывания и широкие возможности ОС обеспечивают одновременную параллельную обработку нескольких программ: одной - на 0П, остальных - на ПП.
Рассмотрим такую ситуацию. В независимых блоках ОЗУ находятся 3 задачи: n, n+1, n+2. Причем задача и в стадии решения, т. е. она занимает ЦП. В это время пользователь закончил подготовку решения еще одной (n+3)-й программы, вставил колоду перфокарт со всеми данными программы в устройство ввода с перфокарт и нажал кнопку ввода. Нажатие кнопки ввода занесло единицу в ячейку регистра прерывания, отведенную для этого устройства. ОС при очередном просмотре регистра прерывания (через 0,2 с) восприняла эту единицу, прервала на время работу с программой и, записала в специальные регистры состояние всех устройств ВС в момент прерывания, проанализировала, есть ли свободное поле в независимой от программы и части ОЗУ. Место оказалось. После этого ОС выдала команду мультиплексному каналу на организацию и проведение передачи программы n+3 из УВД в ОЗУ и восстановила счет программы n. Несколькими секундами позднее программа и окончилась.
Пришло прерывание от ЦП. Снова включилась ОС, определила, что результат счета по программе и надо записать на МЛ в НМЛ # 3, а на очереди стоит по приоритету уже готовая к счету программа n+2. ОС выдала команду селекторному каналу на передачу результатов задачи из ОЗУ на НМЛ #3 и запустила задачу n+2 на счет на ЦП. Начиная с этого момента уже 3 задачи: n, n+2 и n+3, активно обрабатываются на ВС, а n+1 готова к счету.
Сколько же задач может проходить обработку одновременно? Это зависит от числа и типа процессоров в ВС, а если ЦП один, то от числа и типов ПП. При наличии мультиплексных каналов в системе число параллельно обрабатываемых задач зависит не столько от числа процессоров, сколько от ресурсов ОЗУ. В средних моделях ЕС ЭВМ, работающих под управлением ОС ЕС, количество активных задач может быть до 16.
Программы по-разному загружают процессоры ВС. Решение обыкновенного дифференциального уравнения (задачи Коши) нуждается в предварительном вводе программы, коэффициентов, правых частей и начальных условий. Затем ВС переходит к численному интегрированию уравнения шаг за шагом на заданном интервале аргумента. В этой задаче на единицу входных данных приходится большое количество выполненных команд.
В задаче начисления зарплаты в учреждении исходными данными будут табельный номер, фамилия, имя и отчество, оклад и число отработанных дней в месяце. При вычислении месячного заработка из-за простоты формулы расчета на каждую единицу входных данных приходятся единицы команд и довольно много символов печати (расчетные листы, ведомости).
Чтобы достичь максимальной загрузки всех агрегатов ВС, особенно ЦП, поступают cследующим образом. В начале смены вводят на МЛ все задачи (с их характеристиками), а затем производят группировку задач по следующему принципу: в одну группу (например, из 16 задач) должны попасть разные задачи по потреблению ресурсов ВС. Например, рассмотренная выше задача интегрирования обыкновенных дифференциальных уравнений (малый ввод- вывод, большая загрузка ЦП), задача бухгалтерского учета (большой ввод-вывод, малая загрузка ЦП), задача линейной алгебры (средний ввод-вывод, средняя загрузка ЦП) . Внутри пакета задачи сгруппируются таким образом (это делает ЭВМ), чтобы все агрегаты ВС оказались загруженными более-менее равномерно, тогда у ЦП не будет простоев. В пакет могут включаться и задачи пользователей, отлаживающих свои программы. В этом случае пользователи вводят вместе с основной программой программу отладки с дополнительной информацией о том, что именно программа отладки должна вывести на печать в случае ошибки, для обнаружения места ошибки и ее характера.
Пакетная обработка дает наилучший коэффициент суммарной производительности ВС, но наихудший оперативный контакт с программистом. Программист получает результаты в конце смены, чаще на следующий день.
Пакетный режим был основным для машин 2-го поколения, когда машин было мало, ценился каждый час машинного времени и не очень интересовались КПД программиста. В настоящее время пакетный режим часто используется в ночное время для счета больших, хорошо отлаженных программ, идущих под присмотром оператора или как фоновый режим для заполнения пауз в загрузке ЭВМ, возникающих в других режимах эксплуатации.
Этот режим требуется в первую очередь при отладке задач или разработке алгоритмов. Каждому пользователю на время работы отводится дисплейный терминал. Данные по задаче делятся на две неравные части: резидентную, постоянно находящуюся в ОЗУ, в которой в основном записаны необходимые ресурсы ВС для работы с этой задачей, и нерезидентную, содержащую все остальные данные (программу пользователя, вызванные пользователем библиотечные программы, данные), хранящуюся в ВЗУ прямого доступа.
Перед предоставлением ВС пользователю все необходимые на данном этапе задачи данные вводятся в ОЗУ и инициируется работа программы пользователя. Но время, отводимое пользователю в системе-квант, лимитировано. Через tкв, от таймера выдается прерывание и система переходит к решению другой задачи, возвращаясь к прерванной через некоторое время - цикл. Таким образом, время пользователю выдается как бы <пунктиром>. Этот режим также является развитием мультипрограммного режима. Он направлен на то, чтобы каждый из многих пользователей мог работать с ВС в диалоговом режиме с хорошей <реактивностью> (малым временем ответной реакции ВС). Для режима разделения ВС снабжается большим числом дисплейных терминалов (от десятков до нескольких сотен) . Каждому из терминалов ОС отводит защищенное поле для ввода сообщений с терминалов. Каждый терминал операционная система интерпретирует как пультовый, в период кванта времени, отведенного этому терминалу. ОС обходит по очереди все терминалы, проверяя, нет ли сообщения от них. Запросы могут быть разными, например:
Обслуживание запросов ОС ведет так же, как и при мультипрограммной работе. При этом могут возникать ситуации с прерываниями. Они обрабатываются, как правило, с меньшим приоритетом, чем прерывание от таймера.
Существуют несколько дисциплин обслуживания. Рассмотрим самую простую — карусель. При этой дисциплине обслуживания опрашиваются по порядку все терминалы. Тем терминалам, у которых включен сигнал на обслуживание, отводится квант времени. Терминалы со включенным сигналом будем называть активными.
Среднестатистическое число активных терминалов в установившемся режиме может быть вычислено на основании анализа статистических программ учета времени работы ВС в данном учреждении на типовом для него потоке задач. Время
Tцикла = tкв Nt где
Nt - число терминалов в системе, а
Tцикла — максимальное время ожидания очередного обслуживания или “реактивность” ВС в дисциплине карусель. Обычно это время выбирают в пределах 10—20 с. Тогда
tкв = Tцикла / N
где N — число активных терминалов.
В установившемся режиме N =(0,1— 0,3) Np, где Nр — число пользователей, одновременно работающих на ВС в системе разделения времени.
Квант может колебаться для разных случаев Np от нескольких десятых секунд до секунд. За время кванта операционная система должна организовать упрятывание всех выделенных ресурсов предыдущей задачи в ВЗУ, вызов в ОЗУ ресурсов следующей задачи, выдачу оставшейся части кванта (80—90 %) текущей задаче для решения. На практике чаще случается другое. Программист стремится в режиме РВ решить достаточно длинную задачу. Иногда это оправдано, так как отлаживаемая в этом режиме задача достаточно большая. Этому программисту, следовательно, нужно несколько квантов для решения задачи. Целесообразнее их выдать сразу, избежав неоднократного упрятывания и вывода данных в каждом цикле.
Для этого случая был предложен такой порядок обслуживания: задачам, не решенным за 1 квант, при следующем цикле квант удваивается, но снижается их приоритетность по сравнению с более короткими одноквантовыми задачами. Если задача не решается за двойной квант, то при следующем цикле выделяется еще в два раза больший квант и снова снижается приоритетность.
Этот алгоритм, предложенный профессором Корбато, в основном решал проблему противоречий коротких и длинных задач в системе РВ. Строгая постановка задачи показала, что можно рассчитать более оптимальное расписание. Для этого знаменатель геометрической прогрессии следует взять не 2, а несколько меньший. Чтобы задачи, требующие много времени, но получившие низкий приоритет в периоды активности многих терминалов, “не зависали”, один раз в 10— 15 мин маскируются приоритеты и обслуживание производится по карусели. Те задачи, которые имели максимальный квант и минимальный приоритет, получают гарантийное время обслуживания не более 15 мин. Те же из них, которые и при этом круговом обслуживании не будут закончены, снимаются с режима разделения времени, освобождают свои оперативные ресурсы, переписываются на МЛ и переводятся в режим пакетной обработки, о чем пользователю сообщается через дисплей.
В режиме разделения времени ОС организует вывод сообщений на терминалы через мультиплексный канал, упрятывание нерезидентной части только что обслуженной задачи в НМД, вызов нерезидентной части, готовящейся к исполнению задачи в ОЗУ*).
Чтобы максимально использовать ресурсы ОЗУ, нужно, чтобы перечисленные выше действия упрятывания (i—1)-й задачи и вызов (i+1)-й задачи производились за время счета i задачи. Однако такой режим может оказаться невыгодным для максимально полного использования времени ЦП.
При работе в режиме РВ активная задача может быть прервана не только таймером, но и по авосту, по окончанию, по обращению к периферийным устройствам. Во всех случаях она не использует полностью отведенного для нее кванта. Поэтому в момент решения i-й задачи (нумерация ведется по активным терминалам) (i+1)-ая должна уже быть подготовлена к счету.
На практике считается, что в “горячем резерве” должны быть 2—3 задачи.
С малой долей вероятности могут возникнуть предельные случаи:
— все терминалы активны;
— нет активных терминалов.
В первом случае система будет работать с более медленной реакцией, пока не выйдет на стационарный режим, т. е. пока часть задач не остановится из-за обращения к периферийным устройствам или не выйдет на авост, а программист не отключит терминал, ища место ошибки. Чтобы избежать простоя системы во втором случае, в систему вводятся 1—2 фоновые задачи из тех, которые решаются обычно в пакетном режиме. За этими фоновыми задачами закрепляются 1—2 терминала РВ. Задачам дается наинизший приоритет, и блокируется их сброс на пакетный режим.
Этот режим встречается, в основном, в динамических системах управления, наблюдения, диагностики. Такие системы, в свою очередь, являются составными частями крупных научных экспериментальных систем, промышленно-производственных комплексов, транспортных систем, медико-физиологических систем. Всякая система реального времени на самом деле работает с некоторым запаздыванием, величина интервала времени запаздывания принимается такой, чтобы основной процесс обслуживаемой системы не успел существенно изменить значений характеризующих его параметров, поэтому правильнее назвать такой режим режимом псевдореального времени
Допустимая величина запаздывания зависит от самого процесса. Для управления биотехнологическими процессами, например выращиванием пленок грибков антибиотиков, она может быть порядка минут. Для регулирования времени продувки кислородом чугуна в сталеплавильном конверторе в зависимости от показаний датчиков, анализирующих состав газов и их температуру на выходе из конвертора, время запаздывания может быть порядка секунд. А для регулирования пучка частиц по оси ускорителя допустимое время реакции будет порядка миллисекунд.
Прежде всего нужно заметить, что система управления не всегда должна активно работать в каждый интервал запаздывания. Она выполняет свои действия только в том случае, если протекание регулируемого процесса вышло из нормального течения и требует вмешательства. Например, ускоряемый в циклотроне сгусток частиц в течение 10 с двигался точно по оси ускорителя, а на 11-й секунде отклонился, но провести коррекцию надо за 0,02 с, иначе будет поздно, так как он отклонится настолько, что удержать его в ускорителе не удастся и опыт пойдет впустую.
Что же должна за этот промежуток времени выполнить система управления РВ? Опросить номера датчиков и ввести результаты измерений в ВС; произвести обработку данных по заданной программе, преобразовать результаты вычислений в управляющие воздействия
tзап = tизм + tвс + tупр. (5.1)
Как видим, из всего допустимого интервала, запаздывания вычислительной части системы отводится только tвс. Проанализируем более подробно эту часть (tвс) в случае одного обрабатывающего процессора:
tвс = tгот + tвв + 1/V * ( S ni + KАУ) + tвыв, i =1 ... N, (5.2)
где
tгот — время приведения ВС в готовность для приема данных, с момента поступления сигнала о начале регулирования процесса;
tвв — время ввода данных измерения в ОЗУ;
V—быстродействие ЦП (оп/с);
ni — число операций на преобработку i-го датчика;
N — общее число датчиков;
KАУ — число операций в программе на реализацию алгоритма управления;
tвыв — время вывода управляющих сигналов. Эта величина существенно меньше других, так как управление в каждой ситуации, как правило, ведется по 1—2 параметрам.
Обычно данные не вводятся в ОЗУ сразу с датчиков. Они вводятся в специальное ЗУ, не связанное с главной ВС, иногда там проходят предварительную обработку, например сравнение с установками, и только из этого ЗУ вводятся в ОЗУ ВС. Время фиксации данных в автономном ЗУ используется ВС для приведения ее в готовность, т. е. совпадает с tгот.
Для инерционных медленно протекающих процессов при применении мини-ЭВМ или микро-ЭВМ в контуре регулирования допустимое значение времени запаздывания оказывается больше tзап, как суммы в правой части (5.1).
Для быстропротекающих процессов с цифровыми системами управления стремятся уменьшить суммарную величину tвс. Рассматривая пути уменьшения tвс, мы убедимся в тесной связи архитектуры ВС с алгоритмами обработки данных, структурой ВС и структурой всей экспериментальной системы в целом.
На первый взгляд кажется, что ВС не должна иметь в своем составе ВЗУ, а следовательно и каналов, поскольку tвс значительно меньше, чем время организации передачи информации в ОЗУ через канал с типовыми программами ОС. Если ВС состоит из мини-ЭВМ или микро-ЭВМ, такое утверждение может быть верным, но сложность алгоритма управления и требуемое быстродействие могут потребовать использования ВС с большими ресурсами. А более мощная, но и более сложная ВС для обеспечения высокой степени готовности нуждается в постоянном тестировании. Если же коэффициент использования ее на задаче РВ невысок, то целесообразно вместо или наряду с тестированием использовать ее в свободное время для решения фоновых задач. В этом случае обеспечение tгот переносится на ОС. Программа алгоритма задачи РВ целиком размещается в защищенной области ОЗУ, этой программе присваивается наивысший приоритет, никаких упрятываний фоновой задачи в случае приоритетного прерывания задачей РВ не должно происходить, ВС сразу переходит к программе РВ.
Чтобы результаты счета фоновой задачи при этом не терялись полностью, вводятся прерывания более низкого уровня по таймеру, по которым ОС переписывает текущее состояние фоновой задачи в ОЗУ. Тогда при переходе на режим РВ будут теряться только, результаты решения фоновой задачи, полученные за время от последнего прерывания по таймеру.
Можно ли уменьшить величину одночлена со скобкой в (5.2)? Можно:
Эти же требования можно распространить и на алгоритмы, преобработки данных с каждого датчика.
Если же приведенные меры не дадут возможности уложиться в заданное время tвс, можно попытаться сократить число датчиков и вынести задачу преобработки даваемой ими информации с ЦП на специализированные, закрепленные за ними микропроцессоры с быстродействием Vi (в силу параллельности преобработки данных каждого датчика). При этом (5.2) примет вид (5.3)
tвс = tгот + tвв + ( (Ki * Ni) / Vi)max + KАУ / VЦП + tвыв (5.3)
Насколько важным и ответственным является выбор средств уменьшения tвс, может свидетельствовать пример с американским космическим кораблем многоразового использования “Челленджер”. Для облегчения корабля и уменьшения объема передаваемой на Землю и обрабатываемой наземными и бортовыми системами информации лимитировалось число датчиков, в особенности на корпусах твердотопливных ускорителей (ТТУ) и главного бака. В результате при старте 23 января 1986 г. не было вовремя обнаружено прогорание корпуса ТТУ. Как показала видеозапись одного из мониторов, по крайней мере 15 с продолжалось аварийное прогорание ТТУ и нагрев оболочки главного бака. За этот промежуток времени можно было бы произвести сброс ТТУ или отделить корабль от системы 1-й ступени. Но датчиков в необходимом месте не было и каждые 3 с на дисплеях пилота и командного пункта появлялась надпись “все в норме”, пока не произошел взрыв, унесший семь человеческих жизней.