排他制御とは?はいたせいぎょ
排他制御とは、複数のトランザクションやタスクが同じ資源へ同時にアクセスしても矛盾が生じないよう、ロックなどで更新を一度に1つへ限定する制御。ロックの粒度を粗くすれば安全だが並行度が落ち、細かくすれば並行度は上がるがデッドロックの危険が増すという設計上の綱引きがある。
最終更新:2026-10-06
この語が出る過去問を解く →背景
利用者が1人なら処理は順番に流れるので矛盾は起きないが、多重プログラミングと多数の同時接続が前提になると、読み取った値をもとに更新する間に他方が書き換える更新の喪失が現実に起きる。かといって全処理を直列に流せば、性能のために並行実行している意味がなくなる。整合性と並行度という相反する要求を、資源の粒度と待たせ方の設計で折り合わせるのが排他制御である。
具体例
Oracle DatabaseやPostgreSQLでは SELECT ... FOR UPDATE で行に専有ロックを取り、同じ行を更新しようとした側を待たせる。座席予約なら先に取得した側が確定するまで後続は待ち、確定後は満席として扱われる。行単位で取るか表単位で取るかが、待ち時間とデッドロックの起きやすさを左右する。
試験での引っ掛け
共有ロック(読み取り)は複数同時にかけられるが、専有ロック(更新)は1つしか取れず共有ロックとも両立しない、という組合せ表が頻出。互いに相手のロック解除を待つデッドロックは資源を取る順序を全体で統一すれば予防でき、検出時は一方をロールバックして解く。待たせずに更新時点で競合を検出する楽観的方式との対比も問われる。
関連用語
出た過去問
出典:平成30年度 春期 応用情報技術者試験 午前 問18(IPA)解説で登場
セマフォを用いる目的として、適切なものはどれか。
正解:共有資源を管理する。
要点:セマフォは共有資源の排他制御・同期に使う
セマフォは、複数のプロセスやタスクが同時に使うと不都合が生じる共有資源へのアクセスを調停するための仕組みである。資源の利用可能数を表す変数に対しP操作(獲得)とV操作(解放)を行い、排他制御や同期を実現する。
出典:令和4年度 春期 応用情報技術者試験 午前 問17(IPA)解説で登場
出典:令和7年度 秋期 応用情報技術者試験 午前 問16(IPA)解説で登場
一つのI2Cバスに接続された二つのセンサーがある。それぞれのセンサー値を読み込む二つのタスクを排他的に制御したい。利用するリアルタイムOSの機能として、適切なも…
正解:セマフォ
要点:共有資源の排他制御にはセマフォを使う
1本のI2Cバスという単一の共有資源を、複数のタスクが同時に使わないように調停する必要がある。リアルタイムOSでこの相互排除を実現する機構がセマフォであり、資源を利用する前に獲得、利用後に解放することで、同時に1つのタスクだけがバスを使う状態を保証できる。
出典:令和7年度 秋期 応用情報技術者試験 午前 問17(IPA)解説で登場
スレッドセーフの説明として、適切なものはどれか。
正解:アプリケーションを複数のスレッドで並列に実行しても、問題が生じない。
要点:スレッドセーフは複数スレッドで同時実行しても不整合が起きないこと
スレッドセーフとは、あるコードを複数のスレッドから同時に実行しても、データ競合や不整合といった問題が起きないように設計されていることをいう。共有データへのアクセスを適切に排他制御したり、状態を持たない設計にしたりすることで実現する。
出典・参考
公式シラバスの2 コンピュータシステム > 1. オペレーティングシステム > (4) タスク管理に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。