Linuxシステムにはカーネルスペースとユーザースペースがあることがわかります。ユーザースペースは特定のプログラムによって使用され、システムコールと同じ方法でカーネルスペースと通信できます。
私はまた、プログラムのメモリ使用規則がメモリレイアウト、スタック、ヒープ、テキスト、BSS、データなどであることを知っています。
今質問があります。メモリレイアウトとカーネル/ユーザー空間の関係は何ですか?メモリレイアウトはユーザースペースになければなりませんか?それとも、これら2つの概念は互いに関連していませんか?
ベストアンサー1
これら2つの概念は直交しています。メモリを言うとき、ユーザ空間はユーザレベルの権限で実行するときにアクセス可能なメモリを意味し、カーネル空間はカーネルレベルの権限で実行するときにアクセス可能なメモリを意味する。メモリレイアウトは、メモリの使用方法を示し、これは各「ユーザ」に依存する。
カーネルには独自のメモリレイアウトがあります。64ビットx86の広範なドキュメント。