基本情報技術者カーネルと実行制御オリジナル・公式資料照合難易度★★☆☆☆
POSIXスレッドを使う一つのLinuxプロセスで、スレッドT1とT2が動いている。プロセス内のメモリについて正しい説明はどれか。
A
通常のグローバル変数もスレッドローカル変数として扱われ、T1とT2へ別々に複製される
通常のグローバル変数は共有です。スレッドローカルな記憶域を明示してスレッド別の値を持たせる場合とは区別します。
B
ファイル記述子表はT1とT2で別々に管理され、開いたファイルを他方は同じ番号で参照できない
開いているファイル記述子は同一プロセスのスレッドで共有されます。別プロセスの独立した表という考え方と混同しています。
C
グローバル変数やヒープは共有し、各スレッドはそれぞれのスタックを持つ★ 正解
グローバル・ヒープの共有と、スレッドごとのスタックの区別を正しく説明しています。共有変数への更新には同期が必要になり得ます。
D
各スタックは別なので、そのアドレスを渡しても他のスレッドは絶対にアクセスできない
同じアドレス空間なので、ポインターを通じて他スレッドのスタック上の有効な領域へアクセスし得ます。寿命や競合にも注意が必要です。
解説
同じプロセスのスレッドはアドレス空間を共有します。一方、実行のためのスタック等はスレッドごとにあります。別スタックであることは、別プロセスのようなメモリ保護境界を意味しません。
根拠資料・確認情報
対応範囲:2026年度 基本情報技術者試験 科目A・B
資料確認日:2026-10-28
同じレッスンの問題
問題 1
Linux上のアプリが、ユーザーモードからシステムコールでカーネルへファイル操作を依頼する。操作はブロックせず、処理中に別スレッドへの切替えも起こらず、同じスレッドへ戻った。この間に必ず別のプロセスが動いたといえるか。
問題 3
一つのCPUを使うOSで、スレッドPは必要な入力データがまだ届かず、ブロッキングI/Oの待ち状態になった。別のスレッドQは実行可能である。PへのCPU割当てについて正しいのはどれか。 シグナル・タイムアウト等による待機の中断は考えない。
問題 4
常に実行可能な2スレッドを交互に動かすモデルを考える。定常状態で「アプリ処理4ms、切替え処理1ms」の周期を繰り返し、切替え中にはアプリ処理が進まない。他の待ち時間はない。全経過時間に占めるアプリ処理時間の割合はどれか。
問題 5
デバイスの処理が終わるまで、CPUが状態レジスターを繰り返し読む方式を見直す。完了時にデバイス側から通知できるハードウェアを使い、CPUは待つ間に他の仕事を進めたい。基本的な仕組みはどれか。