ネスC
| ネスC | |
|---|---|
| パラダイム | イベント駆動プログラミング、コンポーネントベースのソフトウェアエンジニアリング |
| 開発者 | TinyOSコミュニティ |
| タイピングの規律 | 静的型付け |
| 実装言語 | C |
| プラットフォーム | 組み込みシステム、無線センサーネットワーク |
| OS | タイニーOS |
| ライセンス | オープンソース |
| Webサイト | nescc |
| 影響を受けた | |
| C | |
nesC(発音は「NES-see」)は、TinyOSプラットフォーム向けのアプリケーション構築に使用される、コンポーネントベースのイベント駆動型プログラミング言語です。TinyOSは、分散型無線センサーネットワークで使用される組み込みデバイス上で動作するように設計されたオペレーティング環境です。nesCはCプログラミング言語の拡張として構築されており、コンポーネントが「接続」されてTinyOS上でアプリケーションを実行します。nesCという名称は、「Network embedded systems C」の略称です。[ 1 ]
コンポーネントとインターフェース
nesCプログラムはコンポーネントから構成され、これらのコンポーネントは組み立てられて(「ワイヤード」されて)プログラム全体を構成します。コンポーネントはタスクという形で内部的に並行処理を行います。制御スレッドは、コンポーネントのインターフェースを介してコンポーネントに渡されます。これらのスレッドは、タスクまたはハードウェア割り込みをルートとします。
インターフェースはコンポーネントによって提供または使用される場合があります。提供されるインターフェースは、コンポーネントがユーザーに提供する機能を表すものであり、使用されるインターフェースは、コンポーネントがそのジョブを実行するために必要な機能を表します。
nesC では、インターフェースは双方向です。インターフェースは、インターフェースのプロバイダーによって実装される一連の関数 (コマンド) と、インターフェースのユーザーによって実装される一連の関数 (イベント) を指定します。これにより、単一のインターフェースでコンポーネント間の複雑な相互作用 (例: 何らかのイベントへの関心の登録、その後のイベント発生時のコールバック) を表すことができます。これは、TinyOS のすべての長いコマンド (例: パケットの送信) が非ブロッキングであるため重要です。コマンドの完了はイベント (送信完了) によって通知されます。インターフェースを指定することで、コンポーネントは sendDone イベントの実装を提供しない限り、送信コマンドを呼び出すことができなくなります。通常、コマンドは下方向、つまりアプリケーション コンポーネントからハードウェアに近いコンポーネントへと呼び出し、イベントは上方向へ呼び出します。特定のプリミティブ イベントはハードウェア割り込みにバインドされています。
コンポーネントはインターフェースを介して互いに静的にリンクされています。これにより、実行時の効率が向上し、堅牢な設計が促進され、プログラムの静的解析が向上します。
参考文献
- ^ Gay, David; Levis, Phil; von Behren, Rob; Welsh, Matt; Brewer, Eric; Culler, David (2003). 「nesC言語:ネットワーク化された組み込みシステムへの包括的アプローチ」. SIGPLAN Notices . 38 (5). Association for Computing Machinery : 1– 11. doi : 10.1145/780822.781133 . ISSN 0362-1340 .