Неши
nesC (произносится как «NES-see») — это компонентный , управляемый событиями язык программирования , используемый для создания приложений для платформы TinyOS . TinyOS — это операционная среда , предназначенная для работы на встроенных устройствах, используемых в распределенных беспроводных сенсорных сетях . nesC создан как расширение языка программирования C с компонентами, «соединенными» вместе для запуска приложений на TinyOS. Название nesC является аббревиатурой от «сетевые встроенные системы C». [ 1 ]
Компоненты и интерфейсы
[ редактировать ]Программы nesC состоят из компонентов, которые собираются («подключаются») в целые программы. Компоненты имеют внутренний параллелизм в виде задач. Потоки управления могут передаваться в компонент через его интерфейсы. Эти потоки основаны либо на задаче, либо на аппаратном прерывании.
Интерфейсы могут предоставляться или использоваться компонентами. Предоставленные интерфейсы предназначены для представления функциональности, которую компонент предоставляет своему пользователю, а используемые интерфейсы представляют функциональность, необходимую компоненту для выполнения своей работы.
В nesC интерфейсы являются двунаправленными: они определяют набор функций, которые должен реализовать поставщик интерфейса (команды), и набор, который должен быть реализован пользователем интерфейса (события). Это позволяет одному интерфейсу представлять сложное взаимодействие между компонентами (например, регистрацию интереса к какому-либо событию с последующим обратным вызовом, когда это событие происходит). Это очень важно, поскольку все длинные команды в TinyOS (например, отправка пакета) неблокируются; их завершение сигнализируется посредством события (отправка выполнена). Указав интерфейсы, компонент не может вызвать команду отправки, если он не предоставляет реализацию события sendDone. Обычно команды вызываются вниз, т. е. от компонентов приложения к компонентам, расположенным ближе к оборудованию, тогда как события вызываются вверх. Некоторые примитивные события привязаны к аппаратным прерываниям.
Компоненты статически связаны друг с другом через свои интерфейсы. Это повышает эффективность выполнения, способствует более надежному проектированию и позволяет лучше проводить статический анализ программ.
Ссылки
[ редактировать ]- ^ Гей, Дэвид; Левис, Фил; фон Берен, Роб; Валлийский, Мэтт; Брюэр, Эрик; Каллер, Дэвид (2003). «Язык nesC: целостный подход к сетевым встраиваемым системам». Уведомления SIGPLAN . 38 (5). Ассоциация вычислительной техники : 1–11. дои : 10.1145/780822.781133 . ISSN 0362-1340 .