Реклама:

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

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

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

В вычислительных системах, используемых для управления объектами или технологическими процессами, даже очень малая вероятность неблагоприятного сочетания параллельно исполняемых программ может приводить к редкой эпизодической самоблокировке процесса управления, эквивалентной отказу всей ВС. Для выявления и устранения таких ситуаций требуется длительное стохастическое тестирование в очень широком диапазоне изменения исходных данных. Эффективным методом борьбы с подобными явлениями может быть оперативное обнаружение нарушений и восстановление вычнс-, литвльного процесса (рестарт, см. § 2.3). Для оперативного обнаружения самоблокировки могут применяться аппаратно-программные методы защиты, аналогичные методам борьбы с зацикливаниями и остановами 150].


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