応用情報技術者 2018年 春期 午前2 問18
問題文
セマフォを用いる目的として、適切なものはどれか。
選択肢
ア:共有資源を管理する。(正解)
イ:スタックを容易に実現する。
ウ:スラッシングの発生を回避する。
エ:セグメンテーションを実現する。
セマフォを用いる目的【午前2 解説】
要点まとめ
- 結論:セマフォは複数のプロセスやスレッド間で共有資源のアクセスを制御し、競合を防ぐために用いられます。
- 根拠:共有資源の同時アクセスを制御し、データの整合性を保つためにセマフォは排他制御の基本的な同期機構として機能します。
- 差がつくポイント:セマフォは資源管理に特化しており、スタックの実現やメモリ管理(スラッシングやセグメンテーション)とは直接関係がない点を理解することが重要です。
正解の理由
ア: 共有資源を管理する。が正解です。セマフォはプロセス間で共有される資源の利用を調整し、同時に複数がアクセスして競合状態になるのを防ぎます。これにより、データの破壊や不整合を防止します。
よくある誤解
セマフォはメモリ管理やデータ構造の実装に使うものではなく、あくまでプロセス間の同期と排他制御に用いるものです。
解法ステップ
- セマフォの基本的な役割を確認する(同期・排他制御)。
- 選択肢の内容をそれぞれの技術的意味で理解する。
- スタックやスラッシング、セグメンテーションはセマフォの用途と異なることを認識する。
- 共有資源の管理に関する選択肢を選ぶ。
選択肢別の誤答解説
- イ: スタックを容易に実現する。
スタックはデータ構造の一種であり、セマフォはその実装には直接関係しません。 - ウ: スラッシングの発生を回避する。
スラッシングは主に仮想記憶管理の問題であり、セマフォはこれを防ぐ機能はありません。 - エ: セグメンテーションを実現する。
セグメンテーションはメモリ管理技術であり、セマフォの役割とは異なります。
補足コラム
セマフォは「カウンティングセマフォ」と「バイナリセマフォ」に大別され、前者は複数の資源数を管理し、後者は排他制御に特化しています。これにより、複数のプロセスが共有資源を安全に利用できます。
FAQ
Q: セマフォとミューテックスの違いは何ですか?
A: ミューテックスは排他制御に特化したバイナリセマフォの一種で、所有権の概念があります。セマフォはより汎用的に資源数を管理可能です。
A: ミューテックスは排他制御に特化したバイナリセマフォの一種で、所有権の概念があります。セマフォはより汎用的に資源数を管理可能です。
Q: セマフォはどのように競合状態を防ぎますか?
A: セマフォの値を操作して資源の使用可能数を管理し、値が0以下の場合は待機させることで同時アクセスを制限します。
A: セマフォの値を操作して資源の使用可能数を管理し、値が0以下の場合は待機させることで同時アクセスを制限します。
関連キーワード: セマフォ、排他制御、共有資源管理、同期機構、プロセス間通信

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

