本文へ移動

基本情報技術者試験 · 学習ガイド

2012年度 秋期 午後の問題・解答解説

旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。

2012年度 秋期 午後の概要
30:00

問題番号から選ぶ

プロセスの排他制御とデッドロック

ソフトウェア · 排他制御 / レースコンディション / セマフォ / デッドロック

コンピュータX上で、単一のCPUと共有メモリを使用し、2つのプロセスp1とp2が共有データyに対して並行して計算処理を実行する状況および排他制御に関する記述を読み、設問1〜3に答えよ。 〔計算処理の手順〕 ① 共有データyの値を読み込む。 ② 読み込んだ値を用いて計算する。 ③ 計算結果をyに書き込む。 【設問1】 プロセスp1はyの値を2増加させ、プロセスp2はyの値を1減少させる。実行前のyの値が5であり、yに対する排他制御を行わないとき、p1とp2が並行に1回ずつ処理を実行した直後において、yが取り得ない値を解答群から選べ。 【設問2】 排他制御のため、確保状態または解放状態をもつ同期変数s、および同期変数の状態を変更する関数l(ロック操作)と関数u(アンロック操作)を導入する。各プロセスは「関数lの呼出し → 計算処理 → 関数uの呼出し」の順で処理を行う。空欄 a 、 b に入る正しい答えを解答群から選べ。 【設問3】 プロセスp1, p2が使用する共有データがy1, y2の二つあり、それぞれ同期変数s1, s2を用いて排他制御を行う。プロセスp1が「y1の確保 → y2の確保 → y2の解放 → y1の解放」の順序で同期変数を操作するとき、デッドロックが発生する可能性のあるプロセスp2の操作順序を解答群から選べ。

設問1 ア
4
設問1 イ
5
設問1 ウ
6
設問1 エ
7
設問2 a ア
sの状態が解放状態ならば確保状態にし,確保状態ならば解放状態になるまで待ってから確保状態にする
設問2 b オ
sの状態が確保状態ならば解放状態にし,解放状態ならば何もしない
設問3 ウ
y2の確保,y1の確保,y1の解放,y2の解放
解答・解説を表示

解答

設問1: イ, 設問2 a: ア, 設問2 b: オ, 設問3: ウ

解説

まず要点:複数の処理が同じデータを同時に触るときは、順番待ちの仕組み(排他制御)で1つずつ使わせる必要があります。読込みと書込みの間に別の処理が割り込むと、結果がおかしくなる(レースコンディション)からです。さらに、複数の資源を互いに違う順番で取り合うと、お互いが待ち続けて止まってしまう(デッドロック)ことがあります。

解き方

  1. 設問1では、p1の『読込み・計算・書込み』とp2のそれを様々な順番で組み合わせ、最後に残る値を調べます。
  2. 設問2では、排他制御の開始(ロック)と終了(アンロック)が正しい状態の移り変わりになっているかを選びます。
  3. 設問3では、p1と逆の順番でy2→y1と確保する選択肢を探し、お互いが待ち合う状態になるか確かめます。

小問ごとの答え

小問 設問1:イ
正常に順次実行された場合は 5 + 2 - 1 = 6 となります。並行実行により、p1が5を読み込んだ直後にp2が割り込んで処理を完了(y=4)し、その後p1が計算結果7を書き込むとyは7になります。逆にp2が5を読み込んだ後にp1が先に書き込み(y=7)、p2が計算結果4を上書きするとyは4になります。したがって4, 6, 7は取り得ますが、どちらの加算・減算も反映されない値5になることはありません。
小問 設問2 a:ア
関数lはロック獲得操作です。同期変数sが解放状態であれば直ちに確保状態(ロック)にし、すでに他のプロセスによって確保状態である場合は解放されるまで待機した上で確保状態にする処理となります。
小問 設問2 b:オ
関数uはロック解除操作です。同期変数sが自プロセスによって確保状態になっている場合に解放状態へ戻し、既に解放状態であれば何も行いません。
小問 設問3:ウ
デッドロックは、複数のプロセスが互いに相手の確保している資源の解放を待ち合って進行不能になる現象です。p1がy1を確保した状態でy2を要求し、p2がy2を確保した状態でy1を要求する(y2の確保→y1の確保)順序になっている場合に発生します。

覚えるポイント

  • 2つの更新が干渉すると、一方の更新が他方を上書きするロストアップデートが発生する。
  • デッドロックを防止するための基本原則は、複数資源の獲得順序を一方向に固定することである。

間違えやすいところ

  • 排他制御がなければ2つの計算が打ち消し合って5に戻ると考えてしまう間違いがあります。
  • デッドロックは解放の順番だけで決まると誤解し、確保の順番の大切さを見落とす間違いがあります。

出題の前提:平成24年度秋期 基本情報技術者試験 午後 問1

出典:IPA『2012年度 秋期 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp)

2012年度 秋期 午後

参照した公式資料

IPAが公開した2012年度 秋期 午後の問題・解答資料です。