Опубликован: 22.12.2006 | Доступ: свободный | Студентов: 1216 / 120 | Оценка: 4.73 / 4.45 | Длительность: 18:17:00
ISBN: 978-5-94774-546-7
Специальности: Программист
Лекция 8:

Организация и оптимизация параллельных процессов

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

Комбинированное диспетчирование в ВС с очередью

Рассмотрим более детально, применительно к сложным системам обработки информации или к АСУ, как организуется параллельный процесс в таких системах. При этом мы увидим, что в реальных системах принципы централизованного и децентрализованного управления причудливо переплетаются. Будем ориентироваться на ВС с очередью, обеспечивающей виртуализацию вычислительного ресурса (процессоров), что характерно для семейства "Эльбрус". Такие ВС в значительной степени обеспечивают децентрализованное диспетчирование.

Итак, специально организованная программа, выступающая как самостоятельно, так и во взаимодействии с другими подобными программами, как указывалось выше, соответствует некоторому процессу. Если данный процесс прерывается, то текущее состояние стека процессора, который его выполнял, а также состояние ряда регистров необходимо запомнить. Поставим в соответствие состояние стека процессора, выполняющего данный процесс, в том числе то состояние, которое предшествует выполнению (если процесс только сформирован, но еще не начал выполняться), этому процессу, дополнив его состоянием необходимых регистров. Иными словами, введем понятие стека процесса, которым обладает каждый процесс, о чем говорилось выше. Стек процесса может переходить из пассивного состояния в активное и обратно. Отсюда — понятия активного и пассивного стека процесса. Активный стек связан с оборудованием или "наложен" на оборудование и, следовательно, находится в состоянии изменения. Пассивный стек — это "моментальный снимок", временной срез прерванного (или не начавшегося, или кончившегося) процесса, ждущего дальнейшего выполнения (или уничтожения).

Таким образом, стек процесса отражает текущее состояние процессора, выполняющего данный процесс. Стек процесса можно запомнить на момент прерывания, и хранимой в нем информации при обратном "наложении" на оборудование — на любой свободный процессор достаточно для продолжения выполнения этого процесса. Ранее рассматривалась структура пассивного стека процесса.

Стек процессора обладает активным оборудованием, на которое налагается стек процесса для его активизации (рис. 8.6), т.е. для выполнения процесса.

Комбинированное диспетчирование в ВС с очередью

Рис. 8.6. Комбинированное диспетчирование в ВС с очередью

Следовательно, рассматривая абстрактно стеки процессов, можно говорить о закреплении за ними ресурсов (процессоров) для их активизации. При этом исключается необходимость привязки к конкретным стекам процессоров. Реализуется виртуальный вычислительный ресурс.

Ранее говорилось, что информационной основой работы процессоров ВС является очередь процессов "к процессору", которую составляют пассивные стеки процессов. Из очереди процессов процессоры выбирают задания по мере окончания выполнения принятых ранее или при необходимости их прерывания. Очередь процессов может формироваться на основе любого числа элементов процессов. Естественно, при реализации это число приходится ограничивать. В соответствии с готовностью к выполнению и выполнением различают три состояния процессов: активен, т.е. стек данного процесса находится на стеке одного из процессоров и, следовательно, этот процесс выполняется; готов к выполнению, т.е. данный процесс не выполняется только из-за отсутствия свободного процессора; ждет, т.е. процесс не может выполняться, пока не произойдет некоторое событие, обусловленное приоритетом или информационной взаимосвязью процессов. В частности, если в ВС реализован механизм семафоров, регулирующий частичную упорядоченность процессов, то процесс может находиться в состоянии ожидания открытия семафора ("висеть" на семафоре).

Очередь процессов формируется в виде списка, где готовые к выполнению процессы выстраиваются по приоритетам. Каждый процесс, еще не выполнявшийся или прерванный, представлен своим стеком. Ждущие процессы, по мере выполнения условий задержки (например, открытия семафоров), занимают место в соответствии со значением приоритета (или вырабатываемым значением приоритета) в очереди процессов. Процессор выбирает процесс из головы очереди. В каждом элементе очереди хранится указатель на очередной элемент. Благодаря этим указателям очередь сплетается в нужном порядке.

Исследуя динамическое управление составом очереди и порядком следования в ней процессов, можно организовать различные способы работы ВС. Например, можно периодически подставлять в очередь процессы, реализующие процедуры контроля состояния средств ВС, опроса терминальных устройств, работ по организации памяти, уничтожения процессов и т.д. Возможны различные альтернативные способы влияния на состав очереди. Способ постановки в очередь особенно оправдан при низких требованиях к точности определения момента инициализации работ. Если такие требования высоки, то на помощь приходит механизм прерываний.

На рис. 8.7 отражен текущий вид очереди, а также те связи (штриховыми линиями), которые возникнут, если откроются семафоры A и B выполняемыми на процессорах процессами.

Учёт приоритета задач в очереди

Рис. 8.7. Учёт приоритета задач в очереди

Приоритеты процессов могут периодически изменяться, если это необходимо. Например, система может повышать приоритет тех процессов, у которых достаточно частый обмен информацией с внешним полем. Это увеличивает эффективность мультипрограммной обработки, т.к. прерывание для обменов все равно потребует включения в решение других задач, а окончание обменов позволит вернуться к решению прерванных.

Для повышения надежности и универсальности используемых ресурсов стеки процессоров могут быть нежестко закреплены за процессорами (см. идею решающих полей!). В стеке процессора в основном концентрируются устройства памяти процессоров, основные регистры, над которыми производятся операции. Операционные устройства могут быть отделены от собственно процессора и рассматриваться отдельно. Собственно процессором остается устройство управления, ведающее обработкой потока инструкций, их назначением для выполнения. Это допускает перекоммутацию (показана штриховой линией на рис. 8.8) связи процессор-стек процессора в случае отказов процессоров, т.к. стек отказавшего процессора соответствует пассивному стеку некоторого процесса. При этом может быть учтен приоритет решаемых процессорами задач.

ВС с управляющими процессором и стеком

Рис. 8.8. ВС с управляющими процессором и стеком

Для оперативного продолжения одними процессорами работ, выполнение которых уже начато на других процессорах, целесообразно, чтобы стеки процессоров составляли общую память, доступную всем процессорам. В то же время, эти стеки должны быть в разных блоках этой памяти, что должно допускать одновременное обращение, т.е. должны быть минимизированы взаимные помехи при работе процессоров. Связь с закрепленными за ними стеками процессоры могут осуществлять с помощью специально выделенных базовых регистров, адреса которых различимы для специальных команд, ведающих коммутацией, и неразличимы для процессоров: часть адреса такого регистра является общей для всех процессоров.

В частности, возможна следующая процедура продолжения работы ВС в случае отказа или отключения одного из процессоров.

  1. Прерывается работа головного процессора.
  2. Запускается на нем процедура анализа активных процессов.
  3. Данная процедура находит среди всех активных стеков стек выполняемого процесса с минимальным приоритетом. При этом возможны два случая:

    1. процесс из стека отказавшего процессора оказывается в числе процессов с минимальным приоритетом, тогда этот процесс переводится в очередь процессов;
    2. минимальным приоритетом обладает активный процесс, не выполнявшийся на стеке отказавшего процессора. Тогда изменяется содержимое базового регистра выполнявшего этот процесс процессора для подключения его к стеку отказавшего процессора, стек прерванного процесса становится пассивным и переводится в очередь.

Т.к. внутри системы накапливаются разнообразные функции управления (режимами прохождения задач, ресурсами, обеспечением надежности), то слежение за работой ВС должно осуществляться с устойчивым периодом. Одним из вариантов такого устойчивого вмешательства управляющих средств является не только назначение одного из процессоров управляющим, но и формирование в системе специального управляющего стека процессора (рис. 8.8).

После прерывания управляющего процессора с частотой, с которой производится анализ состояния системы, осуществляется коммутация этого процессора с управляющим стеком процессора, чтобы избежать работы стандартной процедуры переключения на новый вид работ, которая может быть значительно более трудоемкой. В управляющем стеке процессора работы по управлению могут быть всегда подготовлены (в результате предыдущего включения) к продолжению с момента переключения на них управляющего процессора.

Элемент же децентрализованного управления ВС может осуществляться с помощью периодического включения в состав очереди управляющего процесса, объединяющего ряд процедур управления. При каждом включении этого процесса подготавливается его следующее включение вновь. С таким процессом может быть связан семафор C, открытие которого может производиться по достижении таймером некоторого значения времени T = t + \tau, где t — время настоящей активации управляющего процесса; \tau — период его активации (период или такт управления). Тогда управляющий процесс должен начинаться с процедуры ЖДАТЬ (С,Т) и включать в себя процедуру ЗАКРЫТЬ (С).

Очевидно, что такое решение не обеспечивает оперативной и синхронной работы средств ВС и чревато возможностью отказа ВС без выхода на процедуры управления. Поэтому подстановку управляющих процессов в очередь все же целесообразно поручить управляющему процессору (считая, что им может быть один из процессоров ВС, решающий и основные задачи из очереди). На рис. 8.9 это — управляющие процессы УП1 и УП2. Но это, как говорилось ранее, — когда отсутствуют жесткие требования к моменту принятия решения.

Два управляющих процесса в очереди

Рис. 8.9. Два управляющих процесса в очереди

Управляющий процессор реагирует на сигналы прерывания, поступающие в жестком временном режиме — с периодом \tau. По поступлении на управляющий процессор сигнала прерывания может быть произведена его перекоммутация на управляющий стек процессора или подстановка в очередь необходимого управляющего процесса. В этом случае обработка управляющих процессов производится так же, как и других процессов, теми процессорами, которые их выбрали для выполнения в соответствии с виртуализацией вычислительного ресурса.

Подводя итог анализу способов организации управления вычислительным процессом в ВС, можно выделить три возможности:

  1. 1) управление через очередь, при котором управляющий процесс периодически подставляется в очередь и реализуется процессором, выбравшим его в соответствии с дисциплиной обслуживания очереди. Такой способ управления приемлем, например, для таких работ, как реорганизация памяти, оценка состояния средств и др.;
  2. 2) выполнение одним из процессоров функции головного или управляющего. Его работа по обслуживанию очереди периодически прерывается для выполнения функций управления ВС;
  3. 3) наличие в системе специального управляющего процессора (иногда называемого ХОСТ-процессором), в силу назначения и исполнения не участвующего в обслуживании очереди. В многопроцессорных ВС, совмещающих различные режимы обработки информации и нуждающихся в сложном планировании использования ресурсов, целесообразно включение в состав ВС специализированных управляющих процессоров.
< Лекция 7 || Лекция 8: 123456 || Лекция 9 >