応用情報技術者試験 平成30年春 午前問18 解説付き過去問
問題
セマフォを用いる目的として、適切なものはどれか。
正解
解説
この問題は、セマフォがどのような目的で使用されるかについて問うものです。セマフォはプログラミングにおいて重要な概念であり、特に並行処理を扱う際に不可欠です。
- セマフォとは
セマフォは、複数のプロセスやスレッドが共有資源へのアクセスを同期するためのプリミティブです。基本的には、特定のリソースへのアクセス可能数を制限するカウンターとして機能します。
セマフォの値が0の場合、リソースへのアクセスはブロックされ、空きが出るまで他のプロセスは待機します。一方、セマフォの値が1以上の場合、リソースへのアクセスが許可されます。 - 共有資源の管理
セマフォの主な利用目的は、共有資源の管理です。複数のプロセスまたはスレッドが同時に共有資源を利用しようとすると、データの一貫性や整合性を保つためにアクセスの順序を制御する必要があります。セマフォにより、競合状態やデッドロックを防ぎながら、効率的にリソースを利用することが可能になります。
例えば、プリンターのような共有デバイスへのアクセスをセマフォで管理することで、複数の印刷ジョブが同時にプリンターに送られることを防ぎ、順序良く処理を行うことができます。
したがって、「共有資源を管理する」という選択肢が正しい答えとなります。セマフォはスタックの管理、スラッシングの回避、セグメンテーションの実現を直接的に目的としているわけではありません。主な機能としては、複数のプロセスやスレッド間で共有資源を効率的に、かつ安全に管理するために用いられます。