Параллельное программирование

         

Схема организации параллельного процесса


Объединим в законченную модель методы управления, диспетчирования, синхронизации работ и контроля состояния вычислительных средств при построении схемы АСУ коллективного пользования на основе многопроцессорной ВС, ВК или процессоров локальной сети, располагающих общей памятью или достаточно оперативным обменом.

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

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


Рис. 9.1.  Этапы обработки заявок

На рис. 9.2 показано закрепление средств специального программного обеспечения за процессорами ВС.


Рис. 9.2.  Организация вычислительного процесса и средств повышения надёжности

Выбором головного процессора П1 и установлением нумерации Пi, i = 2 , ... , n остальных ведомых процессоров определяется конфигурация ВС. Функции головного может исполнять любой из процессоров в результате реконфигурации ВС. Реконфигурация осуществляется по признаку, вырабатываемому в ВС в случае изменения ее состава. Смена головного процессора производится при его отключении.

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


Супервизор включается по прерыванию в моменты времени k?, k = 0, 1, ... . В эти моменты производится блокировка прерывания процессора П1

работами с более низким приоритетом. Супервизор имеет высший приоритет по отношению ко всем работам в АСУ, уступающий лишь основным работам операционной системы общего программного обеспечения ВС.

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

Начинается циклический опрос состояния буферов терминалов. Каждый буфер терминала представляет собой область памяти, в которой накапливается информация, поступающая от закрепленного за ней терминального устройства через канал связи. Если очередной проверяемый буфер не пуст, проверяется, верен ли пароль, представляющий собой код или слово, закрепленное за каждым терминальным устройством или пользователем, с целью ограничения доступа к АСУ. Верное значение пароля является признаком начала текста входного сообщения. Проверяется, заканчивается ли текст признаком "конец задания", указывающим на окончание выдачи входного сообщения. Если выдача задания еще не закончена, увеличивается значение счетчика времени существования незаконченных заданий от данного терминала. Счетчик позволяет выявлять случаи, когда выдача заданий по какой-либо причине оказывается прерванной. По достижении максимального значения этого счетчика буфер терминала чистится.

Если выдача задания закончена, супервизор передает управление дешифратору заданий, который на основе входного сообщения формирует задание. Заданию присваивается значение приоритета на основе таблицы приоритетов. Сформированное задание оформляется как процесс или несколько взаимосвязанных процессов и помещается в очередь заданий в соответствии со значением приоритета. Указанная работа производится для всех буферов терминалов.

После формирования заданий по входным сообщениям с терминалов супервизор приступает к подготовке выполнения периодических заданий, предусмотренных регламентом обновления информации о состоянии средств системы.


Для каждого задания, включенного в список выполняемых периодически с заданным темпом решения, проверяется, совпадает ли значение k? с началом его выполнения. Если совпадает, в очередь заданий заносится соответствующее задание с указанием его приоритета. Рассчитывается следующий момент начала выполнения данного задания.

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

Программа реконфигурации для головного процессора в стандартной ситуации получает управление от супервизора. Через блок внешних сигналов связей или общую память на все процессоры в специально организованные области памяти рассылается текущее значение таймера. В свою очередь, в память П1 также поступают отметки времени от остальных активных процессоров, вытесняя пришедшие ранее. Каждая из этих отметок сравнивается с текущим значением t таймера П1. Если значение отметки, пришедшей от процессора Пi, превышает значение t - 2?, процессор Пi признается активным. Отрезок времени длиной 2? принимается во избежание дополнительной синхронизации обмена отметками. Если последняя отметка от процессора Пi пришла ранее момента t - 2?, этот процессор считается вышедшим из активного состояния. Задания, выполнение которых начато, но не закончено на Пi, переводятся вновь в очередь заданий. Для этого используется список выполняемых заданий. Производится перенумерация процессоров Пj для j > i уменьшением их номера на единицу. Таким образом производится анализ временных отметок всех ведомых процессоров. По окончании анализа управление вновь передается супервизору.

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

Программа реконфигурации для ведомого процессора (программа реконфигурации 2) входит в состав диспетчера и включается по прерыванию в моменты времени k?, k = 0, 1, .... Устанавливается блокировка прерывания от работ с более низким приоритетом, т.е. от всех работ АСУ. Рассылается временная отметка всем процессорам с номерами, большими номера данного процессора. Производится анализ, отметился ли в области памяти данного процессора хотя бы один процессор с меньшим номером. Если отметился, уточняется номер данного процессора с помощью числа активных процессоров с меньшими номерами, после чего снимается установленная ранее блокировка прерывания и включается диспетчер.

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


Содержание раздела