Jump to content

Эстерель

Esterel синхронный язык программирования для разработки сложных реактивных систем. Императивный программирования стиль Esterel позволяет просто реализовать параллелизм и приоритетное вытеснение . Как следствие, он хорошо подходит для проектирования моделей, в которых преобладает контроль.

Разработка языка началась в начале 1980-х годов и в основном осуществлялась командой Парижской горной школы и INRIA под руководством Жерара Берри во Франции. Современные компиляторы берут программы Esterel и генерируют код C или аппаратные (RTL) реализации ( VHDL или Verilog ).

Язык все еще находится в стадии разработки, выпущено несколько компиляторов. Коммерческой версией Esterel является среда разработки Esterel Studio . Компания, которая его коммерциализировала ( Synfora ), инициировала процесс нормализации с IEEE в апреле 2007 года, однако рабочая группа (P1778) распалась в марте 2011 года. Справочное руководство находится в открытом доступе. [1]

понятие Многообразное времени

Понятие времени, используемое в Эстереле, отличается от понятия несинхронных языков следующим образом: понятие физического времени заменено понятием порядка. Учитываются только одновременность и старшинство событий. Это означает, что физическое время не играет особой роли. Это называется многоформным понятием времени. Программа Esterel описывает полностью упорядоченную последовательность логических моментов. В каждый момент времени происходит произвольное количество событий (включая 0). События, происходящие в один и тот же логический момент, считаются одновременными. Другие события упорядочены по мере их возникновения. Существует два типа операторов: те, которые занимают нулевое время (выполняются и завершаются в один и тот же момент), и те, которые задерживаются на заданное количество циклов.

Сигналы [ править ]

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

Правила согласованности сигналов [ править ]

  • Каждый сигнал присутствует или отсутствует в цикле, но не оба одновременно.
  • Все писатели бегут раньше читателей.

Таким образом

present A else
    emit A
end

является ошибочной программой , поскольку программа записи «emit A» должна выполняться раньше, чем программа чтения «present A», тогда как эта программа требует, чтобы сначала была выполнена «present A».

Языковые утверждения [ править ]

Примитивные утверждения Эстерела [ править ]

Чистый Эстерель имеет одиннадцать примитивных утверждений. [2]

nothing Завершается немедленно, без каких-либо других последствий.
pause Блокирует поток управления в текущем цикле для возобновления в следующем цикле.
п ; д Выполняет p до тех пор, пока не завершится, а затем, в той же реакции, запустит q .
п || д Запускает p и q параллельно
loop п end Перезапускает тело p сразу после его завершения. Каждый путь через тело цикла должен содержать хотя бы один pause оператор, чтобы избежать неограниченного цикла внутри одной реакции.
signal С in п end Объявляет локальный сигнал.
emit С Сделайте сигнал S присутствующим в текущий момент. Сигнал отсутствует, если он не излучается.
present С then п else д end Если сигнал S присутствует в текущий момент, немедленно запустите p , в противном случае запустите q .
suspend п when С Приостанавливает выполнение тела в моменты S. присутствия
trap Т in п end Объявите помеченный escape-блок.
exit Т Перейдите к концу самого внутреннего T. escape-блока с буквой

Производные операторы Esterel [ править ]

Эстерель имеет несколько производных конструкций: [3] [4]

Производный оператор Расширение
halt loop pause end
sustain с loop emit с ; pause end
present с then п end present с then п else nothing end
await с trap T in loop pause; present с then exit T end end loop end
await immediate с trap T in loop present с then exit T end; pause end loop end
suspend п when immediate с suspend present с then pause end; п when с
abort п when (immediate) с trap T in suspend п when (immediate) с ; exit T || await (immediate) с ; exit T; end
weak abort п when (immediate) с trap T in п ; exit T || await (immediate) с ; exit T; end
loop p each с loop abort п ; halt when с end loop
every (immediate) с do п end every await (immediate) с ; loop п each с

Другие Esterel заявления

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

Пример (ABRO) [ править ]

Следующая программа выдает выходной сигнал O, как только получены входные данные A и B. Сбрасывайте поведение всякий раз, когда принимается входной сигнал R.

module ABRO:
input A, B, R;
output O;

loop
  [ await A || await B ];
  emit O
each R

end module

Преимущества Эстерела [ править ]

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

Недостатки Эстерела [ править ]

  • Конечность языка ограничивает гибкость (но выразительности достаточно для выбранной области применения)
  • Семантические проблемы
    • Избежать нарушений причинно-следственной связи часто бывает сложно.
    • В общем случае сложно составить, но существуют простые критерии правильности.

См. также [ править ]

Ссылки [ править ]

  1. ^ Лефевр, Ж. (3 ноября 2005 г.). «Справочное руководство Esterel v7, версия v7 30 – первоначальное предложение по стандартизации IEEE» (PDF) . Эстерел Технолоджис. Архивировано из оригинала (PDF) 30 декабря 2005 г.
  2. ^ Берри, Жерар (1999). «Конструктивная семантика чистого Эстереля» . CiteSeerX   10.1.1.46.2076 .
  3. ^ Берри, Жерар (июнь 2000 г.). «Букварь языка Esterel v5» . Горная школа и INRIA. CiteSeerX   10.1.1.3.1177 .
  4. ^ Берри, Жерар ; Гонтье, Жорж (ноябрь 1992 г.). «Язык синхронного программирования Esterel: дизайн, семантика, реализация». Наука компьютерного программирования . 19 (2): 87–152. CiteSeerX   10.1.1.17.5606 . дои : 10.1016/0167-6423(92)90005-В .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 71e76eac43b27183deb5c7925b7e20d5__1705568820
URL1:https://arc.ask3.ru/arc/aa/71/d5/71e76eac43b27183deb5c7925b7e20d5.html
Заголовок, (Title) документа по адресу, URL1:
Esterel - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)