IPA過去問ドリル

平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7

テクノロジ/ソフトウェア

スレッドとプロセスに関する記述のうち,適切なものはどれか。

出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7

正解:エ

解説

プロセスは,それぞれ独立したアドレス空間(メモリ空間)を持つ実行単位です。これに対してスレッドは,一つのプロセスの中に複数生成できる実行単位であり,同一プロセス内の全てのスレッドは,そのプロセスのアドレス空間(コード,データ,ヒープなど)を共有しつつ,スレッドごとに個別のスタックと実行コンテキスト(プログラムカウンタ,レジスタなど)を持ちます。同一プロセス内のスレッド同士はアドレス空間を共有しているため,プロセス間通信(メモリ空間が異なるため,共有メモリやパイプなどの特別な仕組みが必要)と比較して,共有変数へのアクセスなどによって効率的に通信できます。また,コンテキスト切替えについても,同一プロセス内のスレッド間の切替えはアドレス空間の切替えが不要なため高速に行えますが,プロセスとスレッドの間で切替えが行われるという記述自体が不適切です。

選択肢ごとの解説

  • 誤り。スレッドとプロセスの間でコンテキストの切替えが行われるという記述が不適切です。スレッドは特定のプロセスに属する実行単位であり,「スレッドとプロセスの間」の切替えというものは存在しません(高速なのは同一プロセス内のスレッド間の切替えです)。
  • 誤り。スレッドはプロセスのサブルーチンではなく,プロセス内に生成される実行単位です。また,スレッドは生成元のプロセスと同一のアドレス空間で実行され,別のアドレス空間で実行されるわけではありません。
  • 誤り。同一アドレス空間に含まれる各スレッドは,コードやデータ領域などプロセスの資源は共有しますが,スタックと実行コンテキスト(プログラムカウンタやレジスタの値)はスレッドごとに個別に持ちます。プロセスと共通のスタックを持つわけではありません。
  • 正しい。同一アドレス空間に含まれているスレッド間は,メモリ空間を共有しているため,共有変数を介した通信などが直接行え,アドレス空間が異なるプロセス間の通信(プロセス間通信の仕組みが必要)と比較して効率的に行われます。
エンベデッドシステムスペシャリストの過去問を演習モードで解く