マルチコアと同期

クリティカルセクションの説明として正しいものはどれか。

  1. A共有のデータを操作するため、同時に1つのスレッドしか実行してはいけないプログラムの部分
  2. Bプログラムの中で最も実行時間の長い部分
  3. Cエラーが起きたときにだけ実行される部分
答えと解説を見る

正解:A. 共有のデータを操作するため、同時に1つのスレッドしか実行してはいけないプログラムの部分

共有の変数を読んで書き換える部分を、複数のスレッドが同時に実行するとデータ競合が起こります。このように同時に1つのスレッドだけが実行すべき部分をクリティカルセクションと呼び、入る前にロックを取り、出るときに解放して守ります。クリティカルセクションが長いほどほかのスレッドが待つ時間も長くなるので、できるだけ短くするのが基本です。

  • A. 正しい。ロックなどで守ります。
  • B. 実行時間の長さで決まるものではありません。
  • C. エラー処理のことではありません。
この分野を解く 分野ページへ

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

  1. 並列プログラムで使われるバリア同期の説明として正しいものはどれか。
  2. 64個のコアが、1つの共有カウンタを同時にアトミック命令で更新し続けると、コアを増やしても速くならない。主な理由はどれか。
  3. NUMA(不均一メモリアクセス)のシステムの説明として正しいものはどれか。
  4. LinuxのNUMAシステムでよく使われるファーストタッチの方針(初めてページに書き込んだスレッドが動いているノードのメモリにそのページを置く)で注意すべき点として正しいものはどれか。
  5. 並列プログラムで、コアの数を増やしても性能が思うように伸びない原因として当てはまらないものはどれか。