ソフトウェア
スレッド(Thread)とプロセス(Process)の違いとして正しいものはどれか。
ア.スレッドはOSに管理されないため、プロセスよりも安全性が高い。
イ.スレッドはプロセスよりも多くのメモリを消費し、生成コストが高い。
ウ.スレッドは同一プロセス内のメモリ(ヒープ・グローバル変数)を共有するが、プロセスは独自のメモリ空間を持つ。正解
エ.プロセスは1つのプログラム内でしか生成できず、マルチコアの活用にはスレッドのみが使える。
解説
プロセスは「それぞれ別の部屋を持つ住民」、スレッドは「同じ部屋を共有するルームメイト」。共有は効率的ですが、使い方を間違えると衝突(競合状態)が起きます。
なぜ ウ が正解か
プロセスは独立したメモリ空間(コードセグメント・ヒープ・スタック)を持ちます。 スレッドは同じプロセスの中で生きる実行単位で、 ・共有: ヒープ、グローバル変数、ファイルディスクリプタ ・独自: スタック、レジスタ、プログラムカウンタ スレッドは同じメモリを共有するため生成コストが低く(軽量プロセスとも呼ばれる)、コンテキストスイッチも高速です。ただし共有リソースへの競合アクセスには排他制御が必要です。
出典: AI生成問題(学習用)