GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Linuxのハイメモリとローメモリとは何ですか?

HighmemとLowmemの違いに興味があります:

  1. なぜそのような差別化があるのですか?
  2. そうすることで何が得られますか?
  3. それぞれにどのような機能がありますか?

承認された回答:

32ビットアーキテクチャでは、RAMをアドレス指定するためのアドレス空間の範囲は次のとおりです。

0x00000000 - 0xffffffff

または4'294'967'295 (4 GB)。

Linuxカーネルは、それを3/1(2/2または1/3の場合もあります)をユーザースペース(高メモリ)とカーネルスペース(低メモリ)にそれぞれ分割します。

ユーザースペースの範囲:

0x00000000 - 0xbfffffff

新しく生成されたすべてのユーザープロセスは、この領域内のアドレス(範囲)を取得します。ユーザープロセスは一般的に信頼されていないため、カーネルスペースへのアクセスは禁止されています。さらに、それらは緊急ではないと見なされます。原則として、カーネルはこれらのプロセスへのメモリの割り当てを延期しようとします。

カーネル空間の範囲:

0xc0000000 - 0xffffffff

カーネルプロセスはここでそのアドレス(範囲)を取得します。カーネルはこの1GBのアドレスに直接アクセスできます(1 GB全体ではなく、128MBが高メモリアクセス用に予約されています)。

カーネル空間で生成されたプロセスは信頼され、緊急であり、エラーがないと見なされ、メモリ要求は即座に処理されます。

すべてのカーネルプロセスは、必要に応じてユーザースペース範囲にアクセスすることもできます。これを実現するために、カーネルはアドレスをユーザースペース(高メモリ)からカーネルスペース(低メモリ)にマップします。上記の128MBは特にこのために予約されています。

分割が3/1、2 / 2、または1/3のいずれであるかは、CONFIG_VMSPLIT_...によって制御されます。 オプション;おそらく/boot/config*で確認できます カーネルに選択されたオプションを確認します。


Linux
  1. Linux –ユーザースペースとカーネルスペースの違いは?

  2. カーネルスタックとユーザー空間スタック

  3. メモリ マップド ページと匿名ページとは何ですか?

  1. Linux のハイ メモリとロー メモリとは何ですか?

  2. Linuxカーネルヘッダーとは正確には何ですか?

  3. カーネルパラメータ acpi_osi=linux と acpi_backlight=vendor は何をしますか?

  1. Linux – Linuxカーネルで使用されているエントロピーソースは何ですか?

  2. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  3. Linux プロセスの仮想メモリ空​​間にカーネル部分があることの用途は何ですか?