システム工学概論 第10回 状態遷移の実現 2004. 12. 2
第10回概要 1.専用OS Midas 2.状態遷移の実現 3.実現の為のプログラム 4.メッセージシーケンスチャート
通常のOSの機能 プログラムの実行管理 入力と出力動作の制御 アプリケーション アプリケーション 休止中 実行待 実行中 OSの状態遷移 中断 OSの状態遷移 アプリケーション 実行 中断 入力動作 出力動作 OSは状態遷移を持つが,自分専用で アプリケーションは中断/動作のみ 状態遷移をそのまま実行するには,通常のOSの下に専用のOSが必要
状態遷移の実現 状態構造を持つ系 通常のOS 全ての状態遷移を Midas OSにぶら下げる アプリケーション の 状態遷移を実現する 待機中 A1 Midas OS/状態遷移の実行 main A2 A7 A8 状態Si 状態Sj A5 A1 A2 A3 A4 A5 A6 A7 A8 A9 A6 A3 アプリケーションX 状態Sk A9 A4 A10 全ての状態遷移を Midas OSにぶら下げる アプリケーション の 状態遷移を実現する 仕掛け Midas OS
状態毎かつ遷移原因毎の分岐 状態遷移を 状態構造を持つ系 実現する仕掛 アプリケーション の 状態遷移を実現する 待機中 A1 j 状態k 状態m 原因t 原因s A2 A7 A8 状態Si 状態Sj A5 A6 A3 状態Sk A9 A4 A10 アプリケーション の 状態遷移を実現する 仕掛け Midas OS ある状態で,到来する各遷移原因に対応する状態遷移を実行させる
原理
状態遷移の実行 ・遷移原因(イベント)が到着すると, 記憶している過去からの状態 対 遷移原因 の交点の状態遷移ルート(関数)を実行させる T00 T01 T02 到着した 遷移原因 e1 記憶した状態 S0 T11 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T10 T20 T21 T22 T02 T00 T12 T01 ・遷移原因(イベント)が到着すると, 記憶している過去からの状態 対 遷移原因 の交点の状態遷移ルート(関数)を実行させる ・各状態遷移ルートの最末尾で次状態を規定する
実行の為の準備 状態St 状態St 状態Su 状態Sv 状態Sx 必ず次状態に入る前に定義する 図面上の接続を関数の中で伝える 機能F1 遷移原因i 遷移原因i 遷移原因i 機能F1 機能F2 機能F3 次状態St 次状態Su 次状態Sv 次状態Sx 状態St 状態Su 状態Sv 状態Sx 必ず次状態に入る前に定義する 図面上の接続を関数の中で伝える
分岐の為の状態遷移原因表 {F00, F01, F02}, {F10, F11, F12}, {F20, F21, F22} 設計に使う状態遷移原因表 T11 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T10 T20 T21 T22 T02 T00 T12 T01 プログラム中の状態遷移原因表 {F00, F01, F02}, {F10, F11, F12}, {F20, F21, F22} 状態遷移T状態原因 対応する関数F状態原因
分岐の為の状態遷移原因表 {F00, F01, F02}, {F10, F11, F12}, {F20, F21, F22} 設計に使う状態遷移原因表 T11 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T10 T20 T21 T22 T02 T00 T12 T01 プログラム中の状態遷移原因表 {F00, F01, F02}, {F10, F11, F12}, {F20, F21, F22} 状態遷移T状態原因 対応する関数F状態原因
外部入力からの状態遷移 外部 入力 × 不可 対応処理 対応処理 待合せの記号 c.f. 窓口での待ち行列 釦a押下 釦b押下 釦c押下 (待合せなし) 釦a対応処理 釦c対応処理 待合せ 対応処理 (待合あり) 釦a対応処理 釦b対応処理 釦c対応処理 Queue 待合せの記号 c.f. 窓口での待ち行列 キュー つなぎ込む 取り外す
外部入力を考えた実行管理 待機中 キューか ら取外す 投入金 遷移原因を 使い分岐 キューQ 遷移原因 伴う情報 投入金 100円 無し 有り 待機中 キューQ 遷移原因 伴う情報 キューか ら取外す 投入金 投入金 100円 遷移原因を 使い分岐 投入金を合計 金額に加える 合計金額を表示する 投入金を合計 金額に加える 更新した 合計金額 過去の 合計金額 合計金額を表示する
外部入力の処理 センサー 押下の検出 釦 時間 センサー 出力 サンプ リングS 1周期 遅れL 反転 L S・L 押す E 1 1 1 押釦 センサー 出力 E 周期T サンプ リングS 1 1 1 センサー 1周期 遅れL 1 1 1 反転 L 1 1 1 1 1 1 1 S・L 押下の検出
入力プログラムの原理 定周期(10mS毎) センサー センサー センサー センサー センサー i=0 センサーiを読む i とiのAndを取る センサー 結果=1? N Y 10mS 商品指定|釦i をキューに繋ぐ i=i+1 定周期(10mS毎)に走査する 終? N Y
待合せ/キューの原理 1 キューに繋ぐ Attach, En-queu
待合せ/キューの原理 2 キューから外す Dettach, De-queu
メッセージシーケンスチャート (MSC) MSCは,状態 遷移ルートの, ある軌跡である 自販機の状態遷移図 お客様 自販機 投入金 合計金額表示 販売可能商品表示 商品指定 商品出力 釣銭 自販機の状態遷移図 お客様 メッセージ 自販機 投入金 合計金額表示 投入金 合計金額表示 MSCは,状態 遷移ルートの, ある軌跡である 販売可能商品表示 商品指定 商品 釣銭
メッセージシーケンスチャート (MSC) 自販機の状態遷移図 お客様 自販機 投入金 合計金額表示 投入金 合計金額表示 販売可能商品表示 開始 投入金 合計金額 販売可能 商品指定 商品 釣銭 お客様の状態遷移図 お客様 メッセージ 自販機 投入金 投入金 合計金額表示 合計金額表示 投入金 合計金額表示 投入金 販売可能商品表示 合計金額表示 販売可能商品表示 商品指定 商品指定 商品 商品出力 釣銭 釣銭
プロトコル仕様 プ ロ ト コ ル の規定 自販機の状態遷移図 お客様 自販機 投入金 合計金額表示 投入金 合計金額表示 販売可能商品表示 メッセージ 自販機 開始 投入金 プ ロ ト コ ル の規定 投入金 投入金 合計金額表示 合計金額表示 合計金額 投入金 合計金額表示 投入金 販売可能 販売可能商品表示 合計金額表示 販売可能商品表示 商品指定 商品指定 商品 商品指定 商品 商品出力 釣銭 釣銭 釣銭 お客様の状態遷移図
プロトコル仕様 A プロセス B プロセス A sys T emの状態遷移図 B sys T emの状態遷移図 投入金 合計金額表示 販売可能商品表示 商品指定 商品出力 釣銭 開始 合計金額 販売可能 商品 A sys T emの状態遷移図 B sys T emの状態遷移図 MSC, SDLは,各種の通信プロトコルの仕様記述に用いられている
複数のプロセスの系 プロセス間通信 A プロセス B プロセス A sys T em B sys T em 投入金 合計金額表示 販売可能商品表示 商品指定 商品出力 釣銭 開始 合計金額 販売可能 商品 A sys T em B sys T em プロセス間通信 多数のFSMから成る複雑なシステム
纏め 1.状態遷移を持つ系と専用のOS (Midas OS)を組合せると,合理的 にシステムを作ることができる にシステムを作ることができる 2.OSを構成するプログラム技術を説明した 3.メッセージシーケンスチャートを説明した メッセージシーケンスチャートとSDLの状態遷移図 相互に変換可能な関係にある