基本情報技術者
テクノロジ系
プロセスとスレッドの関係として適切なものはどれか。
1.
プロセスはスレッドの一部である
2.
1つのプロセスは1つ以上のスレッドを持つ
✓ 正解
3.
スレッドはプロセスより多くのメモリを使う
4.
スレッドは独立したメモリ空間を持つ
📝 解説
OSにおいてプロセスはプログラムの実行単位で、独立したメモリ空間(コード領域・データ領域・スタック領域・ヒープ領域)を持ちます。スレッドはプロセス内の実行単位で、同じプロセス内の複数スレッドはメモリ空間を共有します。会社と従業員に例えると、プロセスは独立した会社(独自の建物・資産を持つ)、スレッドはその会社の社員(同じ会社の設備・資料を共有して働く)のイメージです。1つのプロセスは必ず1つ以上のスレッド(メインスレッド)を持ち、複数スレッドを作成してマルチスレッド処理が可能です。プロセス間通信(IPC)は独立したメモリ空間を越えて行うため複雑(ソケット・パイプ・共有メモリ等)ですが、スレッド間は同一メモリを共有するので通信が容易で切り替えコスト(コンテキストスイッチ)も低いです。ただし複数スレッドが同じデータを操作するとデータ競合が発生するため排他制御(mutex等)が必要です。誤答の「プロセスはスレッドの一部」は逆でスレッドがプロセスの一部、「スレッドは独立したメモリ空間を持つ」はプロセスの説明です。「プロセス⊃スレッド・メモリ空間の共有有無が最大の違い」と覚えましょう!