|
|
разработка программного обеспеченияРазработка программного обеспечения для ЭВМ непосредственно связана со следующими проблемами: o исключение взаимных блокировок и бесполезных обменов сообщениями; предохранение от нежелательных условий состязаний; избежание образования слишком большого числа параллельных процессов; обнаружение завершения программы простейшим способом. К новым критериям оценки параллельных программ относятся: o ускорение программы в зависимости от числа процессоров; величина затрат времени на синхронизацию; влияние размера задачи на ускорение; максимальное число занятых процессоров при решении задачи; o детерминизм выполнения программы. Кроме того, при проектировании программ возникают вопросы нового типа: o какой размер должны иметь "порции" параллельной программы? сколько параллельных процессов должно быть образовано? какие обеденные столы используются программистами во время обеда. какой вид синхронизации процессов должен быть принят? как должен управляться доступ к разделяемым данным? как гарантировать детерминированное выполнение программы? как должны подразделяться задачи обработки для достижения наибольшей эффективности использования доступного параллельного оборудования? Отладка параллельных программ очень трудна. Условия состязаний могут маскироваться под логические ошибки программы. Например, когда на машине возникает блокировка, адреса, на которых зависли различные параллельные процессы, ожидая друг друга, можно определить не без некоторых усилий. Однако значительно труднее представить себе последовательность событий, которые привели программу в тупиковую ситуацию. Попытки проведения традиционной отладочной трассировки могут оказать сильнейшее влияние на поведение параллельной программы. Недетерминированные программы при добавлении средств трассировки часто "фиксируют сами себя", так как трассировка преобразует часть выполнения программы в последовательную форму. |