デッドロックの説明として, 適切なものはどれか。
平成24年度 秋期 ITパスポート試験 問67
この問題の解説と、これまでの解答の記録です。
問 67
不正解ア
これはアクセス制御 (アクセス権管理・メモリ保護) の説明である。プロセスが本来権限をもたない情報や他プロセスの記憶領域に触れられないよう、OS が権限に基づいて可否を判定し禁止する仕組みを指す。目的は機密性と安全性の確保であり、資源の解放待ちや処理の停止とはまったく別の概念である。デッドロックは権限がある資源をめぐって起きる待ち合わせの問題なので、この説明は当てはまらない。
不正解イ
これはアカウントロック (ロックアウト) の説明である。利用者認証でパスワードの誤入力が規定回数に達したときに、その利用者のアカウントを一定時間または管理者が解除するまで使用不能にし、総当たり攻撃 (ブルートフォース攻撃) などによる不正ログインを防ぐセキュリティ機能を指す。同じ「ロック」という語を含むため紛らわしいが、対象は利用者アカウントであって、プロセス間の資源の奪い合いとは無関係である。
- ウ
正解 正解はウ。デッドロック (deadlock) とは、複数のプロセスが共通の資源を排他制御 (排他的利用) しながら使うときに、それぞれが自分の確保した資源を握ったまま、相手が握っている資源の解放を待ち続け、どのプロセスも永久に処理を進められなくなる状態のことである。典型例として、プロセス A が資源 X をロックしたうえで資源 Y を要求し、同時にプロセス B が資源 Y をロックしたうえで資源 X を要求する場合を考えるとよい。A は B が Y を放すのを待ち、B は A が X を放すのを待つので、待ち関係が循環して両方とも待ちのまま止まってしまう。この「お互いに相手が占有している資源の解放を待っている」という循環待ちこそがデッドロックの本質であり、ウ の記述はそれをそのまま述べている。データベースで複数のトランザクションが同じ行やテーブルに逆順でロックを掛けた場合にも同様に発生する。デッドロックは放置しても自然には解消しないため、資源を確保する順序をシステム全体で統一する、必要な資源を一括して確保する、一定時間で待ちを打ち切って一方をロールバック (再実行) させるなどの予防・検出・回復の仕組みで対処する。
不正解エ
これはタイムアウト、すなわちラウンドロビン方式などで割り当てられた CPU 時間 (タイムクウォンタム) を使い切り、プロセスが実行状態から実行可能状態へ戻される (プリエンプションされる) ことの説明である。この場合プロセスは順番が回ってくれば再び実行されるので、処理が永久に止まるわけではない。CPU 時間の割当て制御の話であり、資源の解放を相手と待ち合う状態を述べたデッドロックの説明ではない。
- デッドロックの定義 — 複数のプロセスが排他制御された資源を保持したまま、互いに相手の占有資源の解放を待ち、循環待ちに陥って永久に処理が進まなくなる状態。資源獲得順序の統一、一括確保、タイムアウトによる一方のロールバックなどで予防・回復する。
- 紛らわしい「止まる状態」の用語を区別する — アクセス制御は権限のない情報へのアクセスを禁止する保護機能、アカウントロックは認証失敗が続いた利用者を使用不能にする機能、タイムアウト (プリエンプション) は割り当てられた CPU 時間を使い切って実行可能状態へ戻ること。永久に待ち続けるのはデッドロックだけである。