Реклама:

В общем случае параллельного функционирования программ на многопроцессорных ЭВМ принципиальной пробле-' мой является недетерминированное взаимодействие программ через общие данные [18, 19]. Характер такого взаимодействия определяется наличием случайной составляющей в моментах вызова программ для исполнения процессорами, случайной длительностью функционирования программ, флюктуациямиобъема и состава данных, через которые взаимодействуют программы, и рядом других факторов. Вследствие этого последовательность и моменты записи и чтения каждой переменной взаимодействующими программами могут изменяться в широких пределах, и все такие ситуации необходимо протестировать. Количество подобных ситуаций в ряде случаев оказывается катастрофически большим, что требует применения специальных методов упорядоченного стохастического тестирования.

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

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

Недетерминированное исполнение программ каждым процессором может приводить к логическому несоответствию и противоречивости некоторых данных в памяти на интервалах врет мени их активного преобразования. Общие данные для параллельно исполняемых программ могут Определяться и применяться несинхронно, из-за чего возникает возможность обращения к еТце не определенным переменным. Для предотвращения этого необходимо временно блокировать доступ к-некоторым блокам памяти или данным, пока их преобразование, не будет полностью завершено.

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

Задача временной блокировки доступа к данным может быть решена методом семафоров (флагов) [70]. Если в некоторый набор данных вносятся изменения определенной программой, то перед началом ее исполнения специальной командой закрывается «семафор» (записывается признак), который запрещает использование этих данных любой другой параллельно исполняемой программой. Все программы при обращении к блокируемым данным .проверяют состояние признака «семафора». Если признак имеется, то либо программа должйа ожидать до его снятия, либо следует вызвать другую программу, не имеющую обращения к заблокированным данным. . Признак . «семафора» снимается после завершения пересчета Данных соответствующей программой, включившей блокировку.


⇐ Предыдущая страница| |Следующая страница ⇒