マルチコアと同期

スピンロックの説明として正しいものはどれか。

  1. Aロックが空くまで、スレッドを眠らせてOSに起こしてもらう方式のロック
  2. Bロックが空くまで、ループでロックの変数を調べ続けて待つ方式のロック
  3. Cディスクを回転させてデータを守る仕組み
答えと解説を見る

正解:B. ロックが空くまで、ループでロックの変数を調べ続けて待つ方式のロック

スピンロックは、アトミック命令でロックを取ろうとし、取れなければすぐにもう一度試すことを繰り返します。OSを呼んで眠ったり起きたりする手間がないので、ロックを持つ時間がごく短い場合に速く動きます。OSのカーネルの中や、割り込みハンドラとの排他などでよく使われます。一方で、待っている間もCPUを使い続けるという欠点があります。

  • A. 眠って待つのはミューテックスなどです。
  • B. 正しい。ぐるぐる回って(spin)待ちます。
  • C. ディスクとは関係ありません。
この分野を解く 分野ページへ

マルチコアと同期のほかの問題

  1. スピンロックが向かない場面として最も適切なものはどれか。
  2. スピンロックで、ロックの変数をいきなりアトミック命令で書き換えようとするのではなく、普段は通常の読み出しで空くのを待ち、空いたと見えたときだけアトミック命令を使う(test-and-test-and-set)理由として正しいものはどれか。
  3. ミューテックス(眠って待つロック)とスピンロックを比べた説明として正しいものはどれか。
  4. デッドロックの例として正しいものはどれか。
  5. 複数のロックを使うプログラムで、デッドロックを防ぐ方法として最も一般的なものはどれか。