TinyOS 0312006003 浅川 和久 2017/4/7 TinyOS.

Slides:



Advertisements
Similar presentations
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Advertisements

第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
計算機システム概論・3回目 本日のトピック:割込みと入出力制御について 割込み制御について 問題点の明確化 割込みとは
状況に応じたサービスを 提供するための人や物に 共通の情報管理
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
センサネットワークを利用した林業活動におけるウェアラブルシステムの構築
オペレーティングシステムJ/K 2004年10月7日
神奈川大学大学院工学研究科 電気電子情報工学専攻
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
第4回 個人の動画配信補足のためのWeb構築
オペレーティングシステム (OSの機能と構造)
FPGAを用いたMG3用 インターフェース回路の解説
センサノード 時刻同期と位置測定 浅川 和久 2008/11/16 センサノード 時刻同期と位置測定.
担当:青木義満、篠埜 功 情報工学科 3年生対象 専門科目 システムプログラミング 第8回、第9回 シグナル処理 担当:青木義満、篠埜 功
XBee 浅川 和久 2009/7/23.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
割 込 み(1) オペレーティングシステム No.5.
割り込み.
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
割り込み.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
ネストした仮想化を用いた VMの安全な帯域外リモート管理
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
アドホックネットワークの ルーティングプロトコル
Ibaraki Univ. Dept of Electrical & Electronic Eng.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
CONCURRENT PROGRAMMING
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
IPv6アドレスによる RFIDシステム利用方式
サーバ負荷分散におけるOpenFlowを用いた省電力法
型付きアセンブリ言語を用いた安全なカーネル拡張
ネットワークプログラミング 中村 修.
IPv6 ネットワークにおける エニーキャスト通信実現のための プロトコル設計と実装
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
ソケットプログラム(TCP,UDP) EasyChat開発
第15章 TFTP:トリビアル・ファイル転送プロトコル
GEM検出器用DAQ-Middleware
ソケットプログラム(TCP,UDP) EasyChat開発2
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
実行時情報に基づく OSカーネルのコンフィグ最小化
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
情報コミュニケーション入門e 第11回 Part2 Web入門(1)
UDPマルチキャストチャット    空川幸司.
通信機構合わせた最適化をおこなう並列化ンパイラ
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
IP over DVB-RCSの設計と実装
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
オペレーティングシステムJ/K 2004年11月15日2時限目
P2P ネットワーク上で 実時間ストリーミングを実現するための 分散制御プロトコルの提案
組込みシステムとは コンピュータ制御システム?
オペレーティングシステム (OSの機能と構造)
システムコントローラ仕様.
福岡工業大学 情報工学部 情報工学科 種田研究室 于 聡
ポインタとポインタを用いた関数定義.
コンピュータアーキテクチャ 第 5 回.
ネットワーク・プログラミング デバイスドライバと環境変数.
衛星回線を含むネットワークにおける 動的経路制御に関する研究
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
コンピュータアーキテクチャ 第 5 回.
オペレーティングシステム (OSの機能と構造)
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
P2P & JXTA Memo For Beginners
情報ネットワーク 岡村耕二.
TCP/IPの通信手順 (tcpdump)
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
プロトコル番号 長野 英彦.
Presentation transcript:

TinyOS 0312006003 浅川 和久 2017/4/7 TinyOS

TinyOS 外部状態の測定 表示装置はない 測定データは別の場所に送信する 資源(CPU/メモリ/エネルギー)が限られている オープンソース マルチホップ無線ネットワークノード向けのOS 米国バークレイ大学 外部状態の測定 表示装置はない 測定データは別の場所に送信する 資源(CPU/メモリ/エネルギー)が限られている 多様な環境で利用する 同時並行的に進む様々な処理→資源を有効活用(①②) 機能削減(③①) 利用シーン合わせたモジュールの組み換え(④) 2017/4/7 TinyOS

TinyOS 計算モデル モジュール Wait Door StdControl Leds ▼ △ ▼ ▼ △ ▼ コマンド インターフェース     ▼ △        ▼     ▼  △               ▼     コマンド 利用者モジュールからの呼び出し インターフェース モジュール間の接続 双方向 イベント 逆方向からの呼び出し StdControl Door Sensor Leds LedsM ハードウェア割り込み LEDハードウェア 2017/4/7 TinyOS

タスク モジュール内実行とそれによって引き起こされるコマンド実行という一連の処理 複数のタスクを並行して実行できる 実行を始めたら終わるまで走り切る(run-to-completion) サスペンドするシステムコール(sleep() read())が存在しない 並行実行の単位ではなく、一連の意味ある仕事の固まり 優先度の高いタスクに横取りされない(no-preemption) 実行時間が長いタスクを実行すると、他のタスクの実行は長い間待たされる 2017/4/7 TinyOS

タスク サスペンドや緊急に処理するプログラムはイベントを用いる(割り込み) モジュールグラフの最下層にはハードウェア ハードウェア 条件が成立したときに割り込みを起こす グラフ上で下位から上位にイベントが伝播していく イベントもrun-to-completion 時間のかかる処理を実行する必要がでたとき、新しいタスクを生成する イベントの実行が終わると、イベント発生直前に実行していたタスクが継続実行される タスクの実行が終わると、新たに生成されたタスクを実行 2017/4/7 TinyOS

ドアの開閉をセンスする Wait Door StdControl Leds StdControl Door Sensor Leds LedsM ハードウェア割り込み LEDハードウェア WaitDoorモジュールからDoor Sendorモジュールのコマンドstart()を呼び出す。センサの監視を始めるように指示。自分の実行は終了。 ドアセンサがONになると割込みが発生。DoorSensorモジュールのイベントが実行。 WaitDoorモジュールのイベントfired()を呼び出す。 WaitDoorモジュールはイベントfired()が呼ばれたので、ドアスイッチがONになったと判断。LEDモジュールのredOn()を呼び出す。 2017/4/7 TinyOS

イベント駆動型計算 イベント呼び出しを設定して自分は終了する イベントが起点となって連鎖的に処理が進んでいく イベント駆動型計算 センサからの割り込みを中心とした並行的な処理→イベント駆動型が有利 メモリが少なくて済む 「待つ」という処理はOSの実装上のメモリ量やCPU負荷が高い 2017/4/7 TinyOS

競合回避機能 モジュール間共有変数の競合回避機能 ある変数に1を加えるという作業中に割り込みが発生し その変数に別の値が書き込まれた場合に発生する 割り込みから戻っても元の加算が継続 割り込み処理の中で書き込まれた値が上書きされてしまう コンパイラが検出して警告 プログラムの割り込みを一時的に禁止する

TinyOSの通信方式(1) address (16bit) type (8bit) group length data Tiny Active Message 隣接ノード間の通信方式とパケット方式だけが決められている address (16bit) type (8bit) group length data CRC(16bit) address 決められたノードのアドレス group ノードはグループに所属している type typeの値ごとにイベントを定義できる パケットを受信するとイベントが呼び出される

TinyOSの通信方式(2) クライアントサーバシステム TinyOS Active Message サーバはクライアントからの要求を待つ必要がある TinyOS Active Message パケットの中にそれを処理をするための情報(type)が入っている 受信者が待っている必要がない パケットが到着すると、それに対応するイベントが実行される

NesC 1: module WaitDoor{ 2: provides{ 3: interface StdControl; 4: } 4: } 5: uses{ 6: interface SensorControl; 7: interface Leds; 8: } 9: }implementation{ 10: command result_t StdControl.start(){ 11: call SensorControl.start(){ 12: return SUCCESS; 13: } 14: event result_t SensorControl.fired(){ 15: call Leds.redOn(); 16: return SUCCESS; 17: } 18: } 2017/4/7 TinyOS

NesC このモジュールが提供するインターフェース このモジュールが利用するインターフェース 1: module WaitDoor{ 2: provides{ 3: interface StdControl; 4: } 5: uses{ 6: interface SensorControl; 7: interface Leds; 8: } 9: }implementation{ 10: command result_t StdControl.start(){ 11: call SensorControl.start(){ 12: return SUCCESS; 13: } 14: event result_t SensorControl.fired(){ 15: call Leds.redOn(); 16: return SUCCESS; 17: } 18: } このモジュールが提供するインターフェース このモジュールが利用するインターフェース 2017/4/7 TinyOS

NesC StdControlの中のstart()というコマンド を定義する 1: module WaitDoor{ 2: provides{ 3: interface StdControl; 4: } 5: uses{ 6: interface SensorControl; 7: interface Leds; 8: } 9: }implementation{ 10: command result_t StdControl.start(){ 11: call SensorControl.start(){ 12: return SUCCESS; 13: } 14: event result_t SensorControl.fired(){ 15: call Leds.redOn(); 16: return SUCCESS; 17: } 18: } StdControlの中のstart()というコマンド を定義する 2017/4/7 TinyOS

NesC イベントはインターフェースを利用する側が 定義する SensorControlの中のfired()というコマンド を定義する 1: module WaitDoor{ 2: provides{ 3: interface StdControl; 4: } 5: uses{ 6: interface SensorControl; 7: interface Leds; 8: } 9: }implementation{ 10: command result_t StdControl.start(){ 11: call SensorControl.start(){ 12: return SUCCESS; 13: } 14: event result_t SensorControl.fired(){ 15: call Leds.redOn(); 16: return SUCCESS; 17: } 18: } イベントはインターフェースを利用する側が 定義する SensorControlの中のfired()というコマンド を定義する redOn()が呼び出され、LEDが点灯する 2017/4/7 TinyOS

参考文献 安藤 繁,田村 陽介,戸辺義人,南 正輝,センサネットワーク技術,東京電機大学出版局,2005