цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Построение параллельных программ




Построение параллельных программ

Автор: Mike(admin) от 11-07-2019, 05:15

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


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


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


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




© digitrode.ru




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий