情報処理技術者試験解説チャンネル

応用情報技術者試験をはじめとする情報処理技術者試験の午後問題では、「過去10年分を確実に理解しているか」が合格ラインを左右するといわれています。当チャンネルでは、その10年分の午後問題を要点だけに絞り、約10分のコンパクトな解説としてまとめました。限られた時間でも効率よく学習を進められる構成です。

【動画解説】平成30年度 春期エンベデッドシステムスペシャリスト試験 午後Ⅰ問2過去問題解説

www.youtube.com 平成30年度 春期 エンベデッドシステムスペシャリスト試験 午後Ⅰ 問2(冠水防止システム)の解説です。本問は、雨水貯水槽をポンプで排水して冠水を防ぐ組込み制御を題材に、ポンプの物理的な遅延や空運転故障といった制約を前提にした制御ロジック、タスク間でのデータ共有のさせ方、そして排他制御の不備によるデッドロックの理解を問う構成になっています。重要なのは「仕様に書かれた数値条件を、制御判断と計算に正しく落とす」ことと、「複数タスクが同じ共有資源を扱うときの作法」を外さないことです。 まず前提の整理です。雨水管は2系統で、雨水は深さ10mの貯水槽に流入します。制御は5分周期で水位計測と予測制御を行います。ポンプは稼働指示から排水開始まで3分の遅延があり、停止指示から排水停止まで1分の遅延があります。また水がない状態で30秒以上稼働すると故障の可能性があるという制約があり、さらに流入がない場合に満水10mを排水し切るのに28分かかる排水能力が与えられています。以降の設問は、これらの数値制約をどう制御に反映するかが軸になります。 設問1では、停止指示のタイミングが典型問題です。水位が0mになると予測した時刻に停止指示を出すのではなく、1mになる時刻に停止指示を出す理由は、停止指示を出しても実停止まで1分間は排水が継続するからです。もし0mで停止指示を出すと、その後1分間は水がない状態でポンプが回り続ける可能性が高く、空運転30秒超という故障条件に抵触します。よって「空になる直前に止め始める」ための安全マージンとして、1m到達時点で停止指示を出す設計になります。 同じく設問1で、ポンプが実際に稼働しているかの判断方法も、問題文の前提から決めます。ポンプ自身の稼働信号やフィードバックが明記されていない場合、観測できる物理量で推定するのが自然で、ここでは水位の変化がその役割を担います。予測した水位と実測水位を比較し、稼働して排水が起きていれば水位上昇が予測より鈍化する、あるいは下降に転じるため、それを根拠に稼働を判断します。 予測水位の計算問題では、まず流入による水位上昇ペースを押さえます。5分前0.5m、5分後予測2.5mで、現在も予測どおり2.5m、変化率一定なので流入による上昇は(2.5−0.5)/5=0.4m/分です。次に排水能力は、10mを28分で排水するため10/28≒0.357m/分です。稼働指示を出す時刻は、水位が3mになると予測される時刻なので、現在2.5mから0.5m上がるまでに0.5/0.4=1.25分かかり、稼働指示は現在から1.25分後になります。5分後の予測水位は、排水がなければ流入で2.0m上がるので2.5+2.0=4.5mです。ただしポンプは指示から3分後に排水開始なので、排水が効き始めるのは現在+1.25+3=4.25分後で、5分後までに実際に排水する時間は0.75分しかありません。よって排水による水位低下は0.75×(10/28)≒0.268mで、最終的に4.5−0.268≒4.23mとなり、四捨五入で4.2mが解答になります。ここは「遅延がある装置の寄与は、寄与する時間幅を切り出してから差し引く」という思考が得点ポイントです。 設問2はタスク設計とデータ共有の読み取りです。履歴情報を読み出して表示に渡す主体は、表示タスクそのものではなく、表示タスクがメインタスクから受け取った情報で画面を作る前提になっているため、履歴情報へアクセスして必要なデータを集約し、表示タスクへ渡しているのはメインタスクだと整理できます。履歴情報のメモリサイズ計算では、14:00〜16:00の120分を5分周期で更新するので更新回数は24回です。1回あたりの更新データは、水位センサタスクがセンサ計測値2バイト×50台で100バイトに予測流入量4バイトを加え104バイト、貯水槽水位予測タスクが貯水槽水位2バイトと5分後予測水位2バイトで4バイト、合計108バイトとなります。ポンプが停止したままなら、稼働状況1バイトの更新は状態変化時のみで発生しない、という条件の読み落としを防ぐことが重要です。総量は108×24=2,592バイトになります。 設問3は機能追加に伴うデッドロックの原因特定と修正です。既存タスク群が「最新データ」をロックしてから「履歴情報」をロックする順序で資源を獲得している一方、新設の雨水流入量予測タスクが「履歴情報」→「最新データ」と逆順で獲得していると、タイミング次第で互いに相手の解放待ちになり処理が停止します。対策として最も基本的で確実なのは、セマフォ獲得順序を全タスクで統一することです。したがって雨水流入量予測タスク側も既存に合わせ、まず「最新データ」のセマフォを獲得してから「履歴情報」のセマフォを獲得するよう順序を変更します。ここは「排他の種類」よりも「獲得順序の一貫性」が問われている典型です。 まとめると、本問はポンプの遅延や空運転故障という物理制約を前提に、安全マージンを含めた停止・稼働判断を設計できるか、5分周期の予測計算で遅延の寄与時間を正しく切り出せるか、タスク構成では誰がどのデータを持ち、誰が履歴を読み出して表示へ渡すのかを仕様から読み切れるか、そして機能追加で発生しがちなデッドロックをロック順序の統一という定石で直せるか、という4点が得点の軸になります。仕様書の数値条件を計算と制御判断に落とす緻密さと、マルチタスク環境での排他の作法を同時に確認できる問題です。