
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
Linuxオペレーティングシステムに関する記述のうち最も適切なものを選ぶ問題。C言語のプログラムで、mallocで確保されるメモリはヒープ領域、ローカル変数の保存場所はスタック領域に確保される。
OSの基本概念(メモリ領域、実行モード、プロセス、スレッド、API)の正確な理解を問う問題。
① メモリ領域: malloc=ヒープ、ローカル変数・戻り番地=スタック。ユーザモードとカーネルモードを分けるのは保護のため。プロセス切替えはタイマ割込みやシステムコールでも起きる
② ①APIはプロセス間通信専用ではない、②周辺装置の割込みだけではない、④高速化ではなく保護、⑤スレッドは1つのプロセスの中の流れ
③ ③
C言語のプログラムでは、mallocによって動的に確保されるメモリは、ヒープ領域に確保され、関数のローカル変数は、スタック領域に確保される(関数の呼出しの戻り番地や引数も、スタックに格納される)。したがって③が最も適切である。
プロセスのメモリ: コード領域、静的データ領域、ヒープ(malloc/new)、スタック(ローカル変数、戻り番地)。カーネルモードとユーザモードの分離は保護のため。
キーワード: Linux、ヒープ領域、スタック領域、malloc、ローカル変数、プロセス、スレッド、情報工学部門