Описание тега nesc
Nes C (произносится как "NES-see") - это расширение языка программирования C, разработанное для воплощения концепций структурирования и модели выполнения TinyOS. TinyOS - это управляемая событиями операционная система, разработанная для узлов сенсорной сети с очень ограниченными ресурсами (например, 8 Кбайт программной памяти, 512 байт ОЗУ).
Основные концепции nesC:
Разделение конструкции и композиции: программы строятся из компонентов, которые собираются ("соединяются") в целые программы. Компоненты имеют внутренний параллелизм в виде задач. Потоки управления могут передаваться в компонент через его интерфейсы. Эти потоки связаны либо с задачей, либо с аппаратным прерыванием.
Спецификация поведения компонентов с точки зрения набора интерфейсов. Интерфейсы могут предоставляться или использоваться компонентами. Предоставленные интерфейсы предназначены для представления функциональных возможностей, которые компонент предоставляет своему пользователю, используемые интерфейсы представляют функциональные возможности, необходимые компоненту для выполнения своей работы.
Интерфейсы являются двунаправленными: они определяют набор функций, которые должны быть реализованы поставщиком интерфейса (команды), и набор, который будет реализован пользователем интерфейса (события). Это позволяет единому интерфейсу представлять сложное взаимодействие между компонентами (например, регистрацию интереса в каком-либо событии с последующим обратным вызовом, когда это событие происходит). Это очень важно, потому что все длинные команды в TinyOS (например, отправка пакета) не блокируют; об их завершении сигнализирует событие (отправка выполнена). Указывая интерфейсы, компонент не может вызвать команду send, если он не обеспечивает реализацию события sendDone.
Обычно команды вызывают вниз, т. Е. От компонентов приложения к компонентам, расположенным ближе к оборудованию, а события вызывают вверх. Некоторые примитивные события связаны с аппаратными прерываниями.
Компоненты статически связаны друг с другом через свои интерфейсы. Это увеличивает эффективность времени выполнения, поощряет дизайн Rubust и позволяет улучшить статический анализ программ.
nesC разработан с расчетом на то, что код будет генерироваться компиляторами всей программы. Это также должно позволить улучшить генерацию и анализ кода.
Взято с: http://nescc.sourceforge.net/