2012-01-17 1 views
0

私はユーザスペースとカーネルスペースで少し混乱しています。 Linuxまたはカーネル空間のa.outの4 GBの仮想メモリに含まれるカーネル空間は異なり、その4 GBのメモリ空間には含まれません。また、オペレーティングシステム用に予約されている4 GBの仮想メモリの部分には、カーネルまたはカーネルスペースが含まれています。上記のすべての概念が間違っている場合は、私に連絡してください。a.outのカーネルスペース

+0

私は最近、Linuxでのメモリ管理について読んで、このブログを見つけました。http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory非常に役に立ちました –

+0

私は "a。何かと何か関係がありますか? –

答えて

2

すべてはOSに依存します。

ほとんどのオペレーティングシステムでは、ユーザーモードからカーネルモードに切り替えるのが容易になるため、2/2または3/1のように4GB単位で領域を分割するため、切り替え中にページテーブルを再マップする必要はありません。

しかし、Linuxでは4GBのユーザースペースと4GBのカーネルスペースも許可されています。しかし、想像することができますが、これはカーネルモードに切り替える必要があるたびに完全なメモリを再マッピングする必要があり、オーバーヘッドが発生します。

あなたのメモリ空間にはありますが、OSはユーザモードコードからカーネルスペースにアクセスすることを許可していません。この種のアクセス制御は、ページテーブルの特権ビットのために可能です。

ユーザスペースからのカーネルへのすべての呼び出しは、実際にはint 80hコールです。この呼び出しは、呼び出しをカーネルの割り込みハンドラに転送し、カーネル空間とユーザ空間の両方にアクセス可能にします。

+0

+1。しかし、LinuxではPentium Pro以降、PAEも可能です。Pentium Proは、カーネルが最大64ギガバイトまで対応可能です。 –

+1

いいえ、PAEではカーネルが4Gb以上のアドレスを直接指定していません。 64Gbを使用するようにマップを管理するだけです。 –

3

32ビットLinux用の標準メモリモデルは、カーネルに1 GB、ユーザースペースに3 GBを使用します。

合計で4 GBのメモリスペースが使用できるため、「はい」の場合、カーネルのスペースはアドレススペースに含まれます。

This articleには、分割を示すグラフがあります。

+0

これは、はい、カーネルスペースが4GBのアドレス指定可能な仮想メモリに含まれていることを意味します。私はこの答えを+1しましたが、OSのメモリ空間に関する質問の部分には触れませんでした... – Romain

関連する問題