エンベデッドシステムスペシャリスト 2018年 午後1 問02
道路などの冠水を防ぐシステムに関する次の記述を読んで、設問1~3に答えよ。
B社は、雨水専用の下水道管(以下、雨水管という)から流入した水を貯水槽にためて、ポンプで河川に排水することによって、道路などの冠水を防ぐシステム(以下、冠水防止システムという)を開発している。冠水防止システムの構成を図1に示す。

冠水防止システムは、水位計を備えた貯水槽、ポンプ、制御部、表示部、指示入力部、光ケーブルで制御部と接続された水位センサ、及び雨水管から構成されている。雨水管は、2系統あり、直方体の形状をした深さ10メートルの貯水槽につながっている。貯水槽は、2系統の雨水管から流入する水が最大流量のまま流入し続け、ポンプが稼働しないと仮定すると、貯水槽に水がない状態から20分で満杯になる。
〔冠水防止システムの構成要素の機能〕
冠水防止システムの主な構成要素の機能概要を表1に示す。

〔冠水防止システムの動作〕
冠水防止システムは、雨水管の水位と貯水槽の水位を5分ごとに計測する。計測結果に基づいて、貯水槽の水位を予測してポンプを制御する。
〔貯水槽の水位の予測方法及びポンプの稼働・停止〕
制御部は、5分ごとに、次のように予測水位の算出及びポンプの稼働・停止の制御を行う。
(1) ポンプが停止中でポンプに稼働指示を送信していない場合
① 今後5分間の各系統の雨水管から貯水槽に流入する水量を予測し、その水量の合計値(以下、貯水槽予測流入量という)を算出する。今後5分間、ポンプが稼働しないと仮定して、貯水槽の最新の水位と貯水槽予測流入量を基に、5分後の貯水槽の水位を予測する。
② ①で予測した5分後の貯水槽の水位によって次の制御を行う。
(i) 5分後の貯水槽の水位が3メートル以上のとき
・貯水槽の最新の水位と①で予測した5分後の貯水槽の水位から、貯水槽の水位が3メートルになる時刻を算出する。ここで、今後5分間の貯水槽の水位の変化率は一定であると仮定している。算出した時刻になるとポンプに稼働指示を送信する。
・貯水槽の最新の水位、貯水槽予測流入量、ポンプに稼働指示を送信する時刻、ポンプが排水を開始するまでの時間、及びポンプの排水能力を基に、5分後の予測水位を算出する。
(ii) 5分後の貯水槽の水位が3メートル未満のとき
・①で予測した5分後の貯水槽の水位を5分後の予測水位とする。
(2) 既にポンプに稼働指示を送信しているが、ポンプが排水を開始していない場合
貯水槽の最新の水位、貯水槽予測流入量、ポンプに稼働指示を送信した時刻、ポンプが排水を開始するまでの時間、及びポンプの排水能力を基に、5分後の予測水位を算出する。
(3) ポンプが稼働中でポンプに停止指示を送信していない場合
① 今後5分間、ポンプが稼働すると仮定して、貯水槽の最新の水位、貯水槽予測流入量、及びポンプの排水能力を基に、5分後の貯水槽の水位を予測する。
② ①で予測した5分後の貯水槽の水位によって次の制御を行う。
(i) 5分後の貯水槽の水位が1メートル未満のとき
・貯水槽の最新の水位と①で予測した5分後の貯水槽の水位から、貯水槽の水位が1メートルになる時刻を算出する。ここで、今後5分間の貯水槽の水位の変化率は一定であると仮定している。算出した時刻になるとポンプに停止指示を送信する。
・貯水槽の最新の水位、貯水槽予測流入量、ポンプに停止指示を送信する時刻、ポンプが排水を停止するまでの時間、及びポンプの排水能力を基に、5分後の予測水位を算出する。
(ii) 5分後の貯水槽の水位が1メートル以上のとき
・①で予測した5分後の貯水槽の水位を5分後の予測水位とする。
(4) 既にポンプに停止指示を送信しているが、ポンプが排水を停止していない場合
貯水槽の最新の水位、貯水槽予測流入量、ポンプに停止指示を送信した時刻、ポンプが排水を停止するまでの時間、及びポンプの排水能力を基に、5分後の予測水位を算出する。
〔メモリへのデータ保存〕
制御部は、RAMとフラッシュメモリに、次のようにデータを保存する。
・RAMには、ポンプの最新の稼働状況、各水位センサの最新の計測値、貯水槽の最新の水位、最新の貯水槽予測流入量、及び5分後の予測水位の最新値を、“最新データ”として保存する。
・フラッシュメモリには、RAMのデータを書き換えたときに、書換え前のデータを、“履歴情報”として保存する。
なお、容量不足にならないように、容量が十分に大きいフラッシュメモリを使用している。
〔制御部のソフトウェア構成〕
制御部では、リアルタイムOSを使用する。制御部のタスク構成を図2に、制御部のタスクの機能概要を表2に、それぞれ示す。

設問1:冠水防止システムについて、(1)~(3)に答えよ。
設問1(1)
問題文を見るポンプが稼働中でポンプに停止指示を送信していない場合、制御部は、貯水槽の水位が1メートルになると予測した時刻に、ポンプに停止指示を送信する。0メートルになると予測した時刻に停止指示を送信しない理由を、50字以内で述べよ。
模範解答
停止指示の送信から停止までに水がない状態で30秒以上稼働して、ポンプが故障する可能性があるから
解説
解答の導き方
-
ポンプは、停止指示を受け取った時点で直ちに止まるわけではありません。本文には「停止指示を受信してから排水を停止するまでに1分掛かり」とあります。つまり、停止指示を送信した後も、実際に排水が止まるまでポンプは稼働します。
-
一方、ポンプは「貯水槽に水がない状態で30秒以上稼働すると、故障する可能性がある」とされています。停止指示を水位が0メートルになる時刻に送ると、その時点で水がないのに、ポンプは停止までの1分間稼働し続けます。故障の可能性がある時間を超えてしまうため、危険です。
-
そこで、水がなくなる前の水位が1メートルになる時刻に停止指示を送ります。停止までの遅れを見込んで早めに指示し、水がない状態でポンプが長く稼働するのを防ぐためです。
誤りやすいポイント
- 停止指示を送信した時刻と、ポンプが実際に停止する時刻を同じだと考えないようにします。
- 「30秒以上」は故障の可能性がある条件であり、停止までに掛かる1分より短いことを見落とさないようにします。
- 水位が0メートルになる予測時刻に停止指示を送ればよい、と考えるのは誤りです。その時点では水がなく、停止までの間もポンプが動き続けます。
FAQ
Q: 停止指示を送ったら、ポンプはすぐに止まりますか?
A: いいえ。停止指示を受信してから排水が止まるまでに1分掛かります。
A: いいえ。停止指示を受信してから排水が止まるまでに1分掛かります。
Q: 水位が1メートルになる時刻に停止指示を送るのはなぜですか?
A: 実際に停止するまでの時間を見込み、水がなくなった状態でポンプが稼働し続けることを防ぐためです。
A: 実際に停止するまでの時間を見込み、水がなくなった状態でポンプが稼働し続けることを防ぐためです。
Q: 水がない状態で30秒稼働した時点で、必ず故障しますか?
A: 本文は、30秒以上稼働すると故障する可能性があるとしています。必ず故障すると断定しているわけではありません。
A: 本文は、30秒以上稼働すると故障する可能性があるとしています。必ず故障すると断定しているわけではありません。
関連キーワード: ポンプ制御、停止遅延、予測水位、空運転、故障防止
設問1(2)
問題文を見るポンプに稼働指示を送信した後、ポンプが実際に稼働していることを、制御部はどのようにして判断すればよいか。40字以内で述べよ。
模範解答
予測した貯水槽の水位と実際に計測した貯水槽の水位の差から判断する。
解説
解答の導き方
この設問は、ポンプに稼働指示を送ったことではなく、ポンプが実際に排水を始めているかをどう確認するかを問うています。
ポンプは、指示を受けるとすぐに排水を始めるわけではありません。問題文には「稼働指示を受信してから排水を開始するまでに3分掛かり」とあります。したがって、稼働指示を送った直後に水位が下がらなくても、ポンプが動いていないとは判断できません。
そこで制御部は、稼働指示を送った時刻や、排水開始までの時間、ポンプの排水能力などを考慮して、貯水槽の水位を予測します。実際に「ポンプに稼働指示を送信した時刻」などを基に「5分後の予測水位を算出する」とあります。
次に、予測水位と水位計で計測した実際の水位を比べます。実際の水位が予測どおりに変化していれば、ポンプが稼働していると判断できます。予測と実測に差があれば、ポンプが稼働していない、または想定どおりに排水していないと判断する手掛かりになります。そのため、両者の差から判断します。
誤りやすいポイント
- 稼働指示を送った時点で、ポンプがすでに排水を始めていると考えないようにします。排水開始までには時間が掛かります。
- ポンプの稼働状況を確認する専用のセンサがあるとは読み取れません。水位の予測値と実測値を使って、稼働状況を間接的に判断します。
- 予測値だけを確認するのではなく、実際に計測した水位と比較する点が重要です。
FAQ
Q: 稼働指示を送ってすぐに水位が下がらなければ、ポンプは停止中と判断できますか?
A: いいえ。指示の後、排水開始までに時間が掛かるため、その時間が経過する前の水位変化だけでは判断できません。
A: いいえ。指示の後、排水開始までに時間が掛かるため、その時間が経過する前の水位変化だけでは判断できません。
Q: 実測水位が予測水位と一致しない場合、必ずポンプの故障ですか?
A: 必ず故障とは限りません。まず予測値と実測値の差を、ポンプが想定どおりに稼働しているかを判断する手掛かりとして使います。
A: 必ず故障とは限りません。まず予測値と実測値の差を、ポンプが想定どおりに稼働しているかを判断する手掛かりとして使います。
Q: 水位はいつ確認しますか?
A: システムは水位を5分ごとに計測するため、その計測値を予測水位と比較します。
A: システムは水位を5分ごとに計測するため、その計測値を予測水位と比較します。
関連キーワード: 水位予測、センサ計測、フィードバック制御、ポンプ制御
設問1(3)
問題文を見るポンプが停止中でポンプに稼働指示を送信していない場合、貯水槽の5分前の水位が0.5メートルであり、5分前に予測した5分後の貯水槽の水位が2.5メートルであった。貯水槽の最新の水位は、この予測値と同じである。各水位センサの計測値は、5分前から最後に水位を計測した時刻まで一定の値であり、更に今後5分間、同じ値が続くと仮定して、(a)、(b)に答えよ。
(a) ポンプに稼働指示を送信する時刻は、最後に水位を計測した時刻から何分後か。答えは小数第3位を四捨五入して、小数第2位まで求めよ。
(b) ポンプが排水を開始するまでの時間を考慮して、最後に水位を計測した時刻の5分後の予測水位(メートル)を求めよ。答えは小数第2位を四捨五入して、小数第1位まで求めよ。ここで、制御部の処理時間及びポンプに稼働指示を送信してからポンプが稼働指示を受信するまでの時間は無視できるものとする。
模範解答
(a):1.25
(b):4.2
解説
解答の導き方
ポンプが停止中で、まだ稼働指示を送信していない場合の計算です。まず、貯水槽の水位がどの速さで上昇しているかを求め、その変化が今後も続くものとして、稼働指示の時刻と5分後の水位を計算します。
(a) 稼働指示を送信する時刻
5分前の水位はメートルで、その時点で予測した現在の水位はメートルです。したがって、この5分間の水位上昇はメートルであり、上昇率は次のとおりです。
問題文には、今後も水位の変化率は一定とする旨が書かれています。最新の水位もメートルなので、稼働指示を送信する基準であるメートルに達するまでの時間は、次のとおりです。
よって、ポンプに稼働指示を送信するのは、最後に水位を計測した時刻の1.25分後です。
(b) 最後に水位を計測した時刻の5分後の予測水位
ポンプは、稼働指示を受信してから排水を始めるまでに3分掛かります。したがって、最後に水位を計測した時刻を起点にすると、排水が始まるのは
です。5分後までにポンプが排水する時間は、残りの
となります。
次に、ポンプの排水による水位低下率を求めます。問題文にある「満杯の貯水槽の水を全て排水するのに28分」は、稼働指示を受信してからの時間です。そのうち、最初の3分は排水開始までの待ち時間なので、実際の排水時間は分です。貯水槽は深さ10メートルの直方体なので、満杯から空になるまでの水位低下率は次のとおりです。
ポンプが動かない場合、5分間で水位はメートル上昇します。一方、ポンプはそのうち分間排水するため、水位をメートル下げます。よって、5分後の予測水位は次のとおりです。
誤りやすいポイント
- メートル/分の水位上昇率は、5分前の水位メートルと最新の水位メートルの差から求めます。
- ポンプの排水時間を、稼働指示から排水完了までの28分と取り違えないようにします。排水開始までの3分を除いた25分が、実際に排水する時間です。
- ポンプは稼働指示を受けた直後に排水を始めるわけではありません。稼働指示の時刻からさらに3分待つため、5分後までの排水時間は0.75分です。
- 5分後の水位は、5分間の流入による上昇分を加えたうえで、実際に排水する0.75分間の低下分を差し引きます。
FAQ
Q: ポンプの排水による水位低下率を求めるとき、なぜ28分ではなく25分を使うのですか?
A: 28分は稼働指示を受信してから排水を終えるまでの時間であり、最初の3分は排水開始までの待ち時間だからです。実際に水を排水する時間は25分です。
A: 28分は稼働指示を受信してから排水を終えるまでの時間であり、最初の3分は排水開始までの待ち時間だからです。実際に水を排水する時間は25分です。
Q: 5分後までポンプが排水する時間は、なぜ0.75分なのですか?
A: 最後に水位を計測してから1.25分後に稼働指示を送り、その3分後に排水が始まります。排水開始は計測時刻から4.25分後なので、5分後までの排水時間は分です。
A: 最後に水位を計測してから1.25分後に稼働指示を送り、その3分後に排水が始まります。排水開始は計測時刻から4.25分後なので、5分後までの排水時間は分です。
Q: 貯水槽の深さを使って、排水による水位低下率を求められるのはなぜですか?
A: 貯水槽は直方体で、水位と水量が比例するためです。満杯から空になるまでの水位10メートル分を、実際の排水時間25分で割って求められます。
A: 貯水槽は直方体で、水位と水量が比例するためです。満杯から空になるまでの水位10メートル分を、実際の排水時間25分で割って求められます。
関連キーワード: 水位予測、変化率、排水能力、起動遅延、比例計算
設問2:制御部のソフトウェアについて、(1)~(4)に答えよ。
設問2(1)
問題文を見る履歴情報を読み出すタスクを、表2中のタスク名で答えよ。
模範解答
メイン
解説
解答の導き方
-
まず、表示部に何を表示できるかを確認します。表1には、各種の計測値や水位に加えて「これらの履歴情報の表示が可能」とあります。したがって、履歴情報を画面に出すには、どこかのタスクが履歴情報を読み出し、表示に必要な情報を用意する必要があります。
-
次に、画面表示に関係するタスクを表2から探します。メインタスクは、入力タスクから受けた指示に基づいて「表示部に表示する画面の作成に必要な情報を表示タスクに通知する」とあります。一方、表示タスクは、メインタスクから受けた情報を基に画面を作成して表示します。
-
つまり、表示タスクは受け取った情報を画面にする役割であり、表示する内容に応じた情報を用意して渡すのはメインタスクです。履歴情報を表示するときに、その履歴情報を読み出すタスクもメインタスクだと判断できます。
-
水位センサタスク、貯水槽水位予測タスク、ポンプ制御タスクは、表2では履歴情報を更新する処理が示されています。履歴情報を更新するタスクと、表示のために履歴情報を読み出すタスクを混同しないことがポイントです。
誤りやすいポイント
- 履歴情報を更新するタスクを、履歴情報を読み出すタスクだと考えてしまうことです。更新と読出しは別の処理です。
- 表示タスクが履歴情報を直接読み出すと考えてしまうことです。表2では、表示タスクはメインタスクから受けた情報を基に画面を作成します。
- 水位センサタスクなど、履歴情報に関わる処理があるタスクを選んでしまうことです。画面表示に必要な情報を表示タスクへ通知する役割に注目します。
FAQ
Q: 履歴情報を更新するタスクと、履歴情報を読み出すタスクは同じですか?
A: 必ずしも同じではありません。この問題では、表2に更新処理が示されたタスクと、画面表示用の情報を用意するタスクを区別して考えます。
A: 必ずしも同じではありません。この問題では、表2に更新処理が示されたタスクと、画面表示用の情報を用意するタスクを区別して考えます。
Q: 表示タスクが履歴情報を読み出さないと判断できるのはなぜですか?
A: 表2では、表示タスクはメインタスクから受け取った情報を基に画面を作成すると説明されているためです。
A: 表2では、表示タスクはメインタスクから受け取った情報を基に画面を作成すると説明されているためです。
Q: 何を手掛かりにタスクの役割を見分ければよいですか?
A: 表示する情報を用意して渡す処理なのか、受け取った情報を画面にする処理なのか、表2の機能概要から役割を分けて考えます。
A: 表示する情報を用意して渡す処理なのか、受け取った情報を画面にする処理なのか、表2の機能概要から役割を分けて考えます。
関連キーワード: タスク、履歴情報、リアルタイムOS、メモリ管理、タスク間通信
設問2(2)
問題文を見る表2中のaに入れる適切な内容を、50字以内で述べよ。
模範解答
a:指示を送信する時刻になったとき、ポンプの稼働指示又は停止指示をポンプ制御タスクに通知する
解説
解答の導き方
-
表2の「メイン」タスクは、貯水槽水位予測タスクから「ポンプへの指示内容」と「その指示を送信する時刻」を受け取ります。つまり、メインタスクは指示を受け取った直後に次のタスクへ渡すのではなく、指定された時刻に合わせて処理する必要があります。
-
メインタスクは「1秒ごと」に処理を行うので、その周期で指示を送信する時刻になったかを確認し、時刻になったら指示を次のタスクへ渡します。
-
ポンプへの指示を実際に送信するのは、表2の「ポンプ制御」タスクです。メインタスクはこのタスクに稼働指示又は停止指示を通知します。図2でも、メインタスクからポンプ制御タスクへのタスク間通信が示されています。
したがって、空欄には、指定時刻になったときにポンプ制御タスクへ指示を通知する処理が入ります。
誤りやすいポイント
- メインタスクがポンプへ直接指示を送信すると考えないようにします。表2では、ポンプへのメッセージ送信はポンプ制御タスクの機能です。
- 指示内容だけでなく、ポンプ制御タスクへ渡すタイミングも重要です。予測タスクから受け取った送信時刻に従います。
- ポンプ制御タスクへの通知と、ポンプが実際に排水を開始・停止することは別の処理です。通知後のポンプへの送信は、ポンプ制御タスクが行います。
FAQ
Q: なぜメインタスクがポンプへ直接指示しないのですか?
A: 表2では、メインタスクはポンプ制御タスクに指示を通知し、ポンプ制御タスクがポンプにメッセージを送信する役割分担になっているためです。
A: 表2では、メインタスクはポンプ制御タスクに指示を通知し、ポンプ制御タスクがポンプにメッセージを送信する役割分担になっているためです。
Q: 指示を受け取ったら、すぐにポンプ制御タスクへ通知すればよいのですか?
A: いいえ。受け取った指示内容に加えて送信時刻も渡されるため、その時刻になってから通知します。
A: いいえ。受け取った指示内容に加えて送信時刻も渡されるため、その時刻になってから通知します。
Q: 1秒ごとの処理は、何のためにありますか?
A: メインタスクが指定時刻を確認し、時刻に応じて画面表示に必要な情報の通知やポンプ制御タスクへの指示を行うためです。
A: メインタスクが指定時刻を確認し、時刻に応じて画面表示に必要な情報の通知やポンプ制御タスクへの指示を行うためです。
関連キーワード: リアルタイムOS、タスク間通信、メールボックス、タスク分割、周期処理
設問2(3)
問題文を見る模範解答
b:貯水槽の最新の水位
c:最新の貯水槽予測流入量
解説
解答の導き方
-
表2の「貯水槽水位予測」タスクは、水位センサタスクから通知を受けた後に、貯水槽の水位を計測します。その計測値は「貯水槽の水位」として最新データ及び履歴情報に保存されます。このことから、ポンプへの指示が必要かどうかを判断するときに使う水位は、貯水槽の最新の水位だと分かります。
-
一方、水位センサタスクは「各水位センサの最新の計測値を基に、貯水槽予測流入量を算出する」とあります。貯水槽に今後流入する水量を見積もる値は、最新の貯水槽予測流入量です。
-
この2つの値を、本文のポンプ制御の手順と照らし合わせます。ポンプが停止中の場合は、現在の水位と今後の流入量から、ポンプが稼働しないと仮定した5分後の水位を予測します。その水位が3メートル以上になるときは、ポンプに稼働指示を送る時刻を決めます。
-
ポンプが稼働中の場合も、現在の水位と流入量を使い、必要に応じてポンプの排水能力も加えて、5分後の水位を予測します。その水位が1メートル未満になるときは、ポンプに停止指示を送る時刻を決めます。
このように、指示の要否を判断するための基本となる値は、現在の水位と予測流入量です。したがって、bには「貯水槽の最新の水位」、cには「最新の貯水槽予測流入量」が入ります。
誤りやすいポイント
- 「最新の貯水槽予測流入量」と「5分後の予測水位」を混同しないようにします。前者は流入する水量の予測値で、後者は水位の予測結果です。
- ポンプの排水能力は、ポンプ稼働中の水位予測などで必要に応じて使う値です。空欄に入る基本の2項目とは区別します。
- ポンプへの指示は、現在の状態だけでなく、今後の水位予測に基づいて判断します。現在の水位だけで指示の要否を決めるわけではありません。
FAQ
Q: 貯水槽の水位は、どのタスクが取得しますか?
A: 貯水槽水位予測タスクが水位を計測し、最新データ及び履歴情報に含まれる水位を更新します。
A: 貯水槽水位予測タスクが水位を計測し、最新データ及び履歴情報に含まれる水位を更新します。
Q: 貯水槽予測流入量は、どのタスクが算出しますか?
A: 水位センサタスクが各水位センサの計測値を基に算出し、最新データ及び履歴情報を更新します。
A: 水位センサタスクが各水位センサの計測値を基に算出し、最新データ及び履歴情報を更新します。
Q: ポンプの排水能力は、どのような場合に判断材料になりますか?
A: ポンプが稼働している場合など、ポンプが排水することを考慮して水位を予測するときに使います。
A: ポンプが稼働している場合など、ポンプが排水することを考慮して水位を予測するときに使います。
関連キーワード: 水位予測、流入量予測、ポンプ制御、閾値制御、周期処理
設問2(4)
問題文を見るある日の14時00分に、水位センサタスクが各水位センサの計測値を受信した。この日の14時00分から、16時00分に水位センサタスクが各水位センサの計測値を受信するまでの間に、各タスクが更新した履歴情報のデータのサイズの合計は何バイトになるか。整数で求めよ。ここで、ポンプは14時00分から16時00分まで停止していたものとする。
模範解答
2,592
解説
解答の導き方
履歴情報には、各タスクがデータを更新したとき、書換え前のデータが保存されます。そのため、まず5分ごとの処理で各タスクが更新するデータ量を求めます。
表2の「水位センサ」タスクは、水位センサの計測値と貯水槽予測流入量を更新します。水位センサは「2系統の雨水管の水位センサを合わせると50台」で、計測値は1台当たり2バイトです。貯水槽予測流入量は4バイトなので、このタスクによる更新量は、1回当たり次のとおりです。
水位センサタスクから通知を受ける「貯水槽水位予測」タスクは、貯水槽の水位と5分後の予測水位を更新します。どちらも2バイトなので、1回当たりの更新量は次のとおりです。
「ポンプ制御」タスクは、ポンプへの指示を受けた後、ポンプの稼働状況を更新します。しかし、この設問ではポンプが14時00分から16時00分まで停止しているため、ポンプの稼働状況の更新は数えません。
水位センサタスクは5分ごとに処理を行います。14時00分から16時00分までは2時間なので、処理の回数は次のとおりです。
したがって、各タスクによる1回当たりの更新量の合計を24回分求めます。
誤りやすいポイント
- 水位センサの計測値は、1台当たり2バイトです。50台分を計算するため、計測値の更新量は100バイトです。
- 水位センサタスクの更新対象には、計測値だけでなく、4バイトの貯水槽予測流入量も含まれます。
- 貯水槽水位予測タスクでは、貯水槽の水位と5分後の予測水位の両方を更新します。
- 2時間に5分間隔の処理は24回です。14時00分から16時00分までの経過時間を、端点を含めて25回と数えないようにします。
- ポンプ制御タスクの稼働状況更新は、ポンプへの指示後に行われます。ポンプが停止したままという条件では、その更新を加えません。
FAQ
Q: 14時00分と16時00分の時点も含めて数えると、25回になりませんか?
A: 14時00分から16時00分までの経過時間は120分で、5分ごとの処理間隔は24個です。開始時点と終了時点の両方を数えて25個の時刻が並ぶ場合でも、処理間隔の数は24回です。
A: 14時00分から16時00分までの経過時間は120分で、5分ごとの処理間隔は24個です。開始時点と終了時点の両方を数えて25個の時刻が並ぶ場合でも、処理間隔の数は24回です。
Q: 水位センサの計測値が前回と同じ場合も、履歴情報のサイズに加えますか?
A: 表2では計測値などを更新する処理が示されています。設問は更新したデータのサイズを求めているため、値が同じかどうかではなく、更新対象のデータサイズで計算します。
A: 表2では計測値などを更新する処理が示されています。設問は更新したデータのサイズを求めているため、値が同じかどうかではなく、更新対象のデータサイズで計算します。
Q: ポンプが停止中なら、ポンプ制御タスクの履歴情報更新を必ず数えないのですか?
A: 表2では、ポンプ制御タスクは稼働指示または停止指示を受けて処理し、排水の開始・停止までの時間が経過した後に稼働状況を更新します。この設問ではポンプが停止したままなので、その更新は発生しないものとして扱います。
A: 表2では、ポンプ制御タスクは稼働指示または停止指示を受けて処理し、排水の開始・停止までの時間が経過した後に稼働状況を更新します。この設問ではポンプが停止したままなので、その更新は発生しないものとして扱います。
関連キーワード: 周期処理、タスク、履歴情報、データサイズ、状態遷移
設問3:冠水防止システムの機能追加について、(1)、(2)に答えよ。
冠水防止システムのシミュレーションを実施したところ、集中豪雨時に予測値と計測値が大きくずれ、ポンプの稼働が遅れることがあった。これを防ぐために、外部の雨量監視システムの情報(以下、雨量データという)を利用する機能を追加して、貯水槽予測流入量の予測精度を高めることにした。そのために行った、制御部の主なタスク変更の概要を表3に示す。ここで、LAN通信タスク及び雨水流入量予測タスクは、新たに追加したタスクである。


設問3(1)
問題文を見る表3中のd、eに入れる適切な字句を答えよ。
模範解答
d:予測雨水流入量
e:各水位センサの最新の計測値
解説
解答の導き方
-
表3では、新たに追加された雨水流入量予測タスクが、履歴情報の雨量データを読み出し、「各系統の雨水管に入る水量」を算出します。この水量を「予測雨水流入量」と呼んでいます。
-
さらに同タスクは、最新データ及び履歴情報に含まれる予測雨水流入量を更新します。したがって、水位センサタスクが「最新データから」読み出す[d]は、この予測雨水流入量です。
-
次に、表3の水位センサタスクの変更内容を確認します。表2では、変更前の水位センサタスクが、各水位センサの計測値を受信して保存し、その計測値を基に貯水槽予測流入量を算出していました。変更後は、予測雨水流入量も使って貯水槽予測流入量を算出するため、もう一方の材料である[e]には、各水位センサの最新の計測値が入ります。
-
つまり、貯水槽予測流入量は、雨量データから算出した「予測雨水流入量」と、雨水管の現在の状態を示す「各水位センサの最新の計測値」を組み合わせて求めます。
誤りやすいポイント
- [d]に貯水槽予測流入量を入れてしまう誤りです。求める材料の一つである予測雨水流入量と、その材料などから算出する貯水槽予測流入量は別の値です。
- [e]に雨量データを入れてしまう誤りです。雨量データを読み出して予測雨水流入量を算出するのは、雨水流入量予測タスクです。水位センサタスクが組み合わせるのは、各水位センサの計測値です。
- 「最新データから読み出す」という記述だけで判断するのではなく、表3にある各タスクの処理と、表2にある変更前の水位センサタスクの機能を合わせて考えることが大切です。
FAQ
Q: 予測雨水流入量と貯水槽予測流入量は、何が違いますか?
A: 予測雨水流入量は各系統の雨水管に入る水量です。それを水位センサの計測値などと組み合わせて、貯水槽に流入する水量として算出したものが貯水槽予測流入量です。
A: 予測雨水流入量は各系統の雨水管に入る水量です。それを水位センサの計測値などと組み合わせて、貯水槽に流入する水量として算出したものが貯水槽予測流入量です。
Q: なぜ各水位センサの計測値も使うのですか?
A: 雨量データから予測した雨水管への流入量だけでなく、各水位センサが捉えた雨水管の状態も使うことで、貯水槽予測流入量を算出するためです。
A: 雨量データから予測した雨水管への流入量だけでなく、各水位センサが捉えた雨水管の状態も使うことで、貯水槽予測流入量を算出するためです。
Q: 表2の記述は、どのように役立ちますか?
A: 変更前の水位センサタスクが、センサの最新の計測値を保存し、それを基に貯水槽予測流入量を算出していたことが分かります。表3の変更後も使う計測値を判断する手掛かりになります。
A: 変更前の水位センサタスクが、センサの最新の計測値を保存し、それを基に貯水槽予測流入量を算出していたことが分かります。表3の変更後も使う計測値を判断する手掛かりになります。
関連キーワード: センサデータ、流量予測、予測値、データ共有、タスク間通信
設問3(2)
問題文を見る変更後の冠水防止システムをテストしたところ、表示部の表示の更新が停止するという不具合が発生した。そこで、制御部のタスクの動作を調査した結果、最新データ及び履歴情報にアクセスするときの各タスクの処理手順が、表4に示すようになっていた。この不具合の対策を70字以内で述べよ。ここで、機器の故障は発生していないものとする。


模範解答
雨水流入量予測タスクが最新データ及び履歴情報にアクセスするときに、履歴情報よりも先に最新データのセマフォを獲得するようにする。
解説
解答の導き方
この設問では、表示の更新が停止した原因を、最新データ及び履歴情報を使うタスクの処理順序から考えます。
表4では、水位センサ、貯水槽水位予測、ポンプ制御の各タスクは、先に「最新データのセマフォ」を獲得し、その後に「履歴情報のセマフォ」を獲得しています。一方、雨水流入量予測タスクは、先に履歴情報のセマフォを獲得し、その後に最新データのセマフォを獲得しています。つまり、二つのセマフォを獲得する順序がそろっていません。
この順序の違いによって、例えば、水位センサタスクが最新データのセマフォを獲得した後、雨水流入量予測タスクが履歴情報のセマフォを獲得する状況が起こり得ます。その後、水位センサタスクは雨水流入量予測タスクが保持する履歴情報のセマフォを待ち、雨水流入量予測タスクは水位センサタスクが保持する最新データのセマフォを待つことになります。互いに相手のセマフォが解放されるのを待ち続けるため、両タスクは処理を進められません。
このような行き詰まりを防ぐには、すべてのタスクでセマフォを獲得する順序を統一します。他のタスクが最新データ、履歴情報の順で獲得しているので、雨水流入量予測タスクも最新データのセマフォを先に獲得するように変更します。これにより、タスク間で互いのセマフォを待ち合う状態を防ぎ、表示に必要な処理の停滞も防げます。
誤りやすいポイント
- セマフォを解放する順序だけを変えても、獲得時の順序の不一致は解消されません。確認すべきなのは、各タスクがどの順番でセマフォを獲得するかです。
- 優先度を変更しても、二つのタスクが互いのセマフォを待つ状態そのものは解消されません。原因はタスクの優先度ではなく、セマフォの獲得順序です。
- すべてのタスクの処理手順を変更する必要はありません。順序が他のタスクと逆になっている雨水流入量予測タスクを変更すれば、獲得順序を統一できます。
FAQ
Q: どうしてセマフォの獲得順序を統一すると、待ち続ける状態を防げるのですか?
A: どのタスクも同じ順序でセマフォを獲得すれば、あるタスクが一つ目のセマフォを保持したまま、別のタスクが保持する二つ目のセマフォを待つという循環が起こらなくなるためです。
A: どのタスクも同じ順序でセマフォを獲得すれば、あるタスクが一つ目のセマフォを保持したまま、別のタスクが保持する二つ目のセマフォを待つという循環が起こらなくなるためです。
Q: タスクの優先度を高くすれば、処理の行き詰まりは解消しますか?
A: 解消しません。待っているセマフォが解放されない状態は、優先度を変更しても続きます。セマフォの獲得順序をそろえることが対策になります。
A: 解消しません。待っているセマフォが解放されない状態は、優先度を変更しても続きます。セマフォの獲得順序をそろえることが対策になります。
Q: 雨水流入量予測タスクだけを変更するのはなぜですか?
A: 表4では、他のタスクは「最新データ」から先にセマフォを獲得します。雨水流入量予測タスクの順序をそれに合わせれば、獲得順序を統一できるからです。
A: 表4では、他のタスクは「最新データ」から先にセマフォを獲得します。雨水流入量予測タスクの順序をそれに合わせれば、獲得順序を統一できるからです。
関連キーワード: セマフォ、排他制御、デッドロック、循環待ち、資源順序




