平成30年度 春期 午前Ⅱ 問7
オペレーティングシステム
プロセスに関する記述
スレッドとプロセスに関する記述のうち,適切なものはどれか。
- アスレッドとプロセスは同一のアドレス空間で実行され,スレッドとプロセスの間でコンテキストの切替えが高速に行われる。
- イスレッドはプロセスのサブルーチンとして,プロセスとは別のアドレス空間で実行される。
- ウ同一アドレス空間に含まれている各スレッドは,プロセスと共通のスタックとコンテキストをもつ。
- エ同一アドレス空間に含まれているスレッド間の通信は,プロセス間の通信と比較して効率的に行われる。
答えと解説を見る
✓ これが正解エ同一アドレス空間に含まれているスレッド間の通信は,プロセス間の通信と比較して効率的に行われる。
解説
同一アドレス空間のスレッド間の通信は、プロセス間より効率的です。
プロセスは、それぞれが独立したアドレス空間を持つ実行の単位です。スレッドはプロセスの中で動く実行の流れで、同じプロセスに属するスレッドどうしはアドレス空間やファイルなどの資源を共有し、スタックとレジスタの内容などのコンテキストだけをスレッドごとに持ちます。このため、同じプロセス内のスレッドどうしは、共有しているメモリ上の変数を読み書きするだけでデータを受け渡すことができ、OS を介した仕組みが必要なプロセス間の通信に比べて効率よくやり取りできます。見分ける軸は、何を共有し、何をスレッドごとに持つかです。アドレス空間は共有、スタックとコンテキストは個別、と押さえれば選択肢を判断できます。
ほかの選択肢はなぜ違うのか
- アスレッドとプロセスは同一のアドレス空間で…:異なるプロセスはそれぞれ別のアドレス空間で実行されるので、スレッドとプロセスが同一のアドレス空間で動くという前提が誤りです。高速に切り替えられるのは同じプロセス内のスレッドどうしであり、プロセスをまたぐ切替えは重くなります。
- イスレッドはプロセスのサブルーチンとして,…:スレッドはプロセスの中で、そのプロセスと同じアドレス空間を共有して実行されます。別のアドレス空間で動くという説明は独立したプロセスの性質を述べたもので、サブルーチンという位置付けも当たりません。
- ウ同一アドレス空間に含まれている各スレッド…:同じアドレス空間のスレッドどうしでも、スタックとレジスタなどのコンテキストはスレッドごとに別々に持ちます。共通のスタックを使うと、それぞれの関数呼出しの情報が混ざって並行に実行できなくなります。
出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)