ホームページ  >  記事  >  運用・保守  >  Linux と Windows のメモリの違いは何ですか?

Linux と Windows のメモリの違いは何ですか?

WBOY
WBOYオリジナル
2022-08-26 17:05:364700ブラウズ

Linux メモリと Windows メモリの違い: 1. Linux は最初に物理メモリを使用し、メモリが足りない場合はスワップ パーティションに配置しますが、Windows はメモリと仮想メモリを一緒に使用します; 2. Windows は常にメモリを使用します。メモリ ある程度の空き領域を残すと、新しいプログラムの起動が速くなります。ただし、Linux のメモリはフルに使用されることがよくあります。新しいプログラムに割り当てる前に、メモリの一部を空にする必要があります。新しいプログラムの起動は遅くなります。 。

Linux と Windows のメモリの違いは何ですか?

このチュートリアルの動作環境: Windows10&&linux7.3 システム、Dell G3 コンピューター。

Linux と Windows のメモリの違いは何ですか?

Linux は最初に物理メモリを使用します。物理メモリがまだ空いているとき、Linux はメモリを解放しません。メモリを占有しているプログラムは、閉じられています (メモリのこの部分はキャッシュに使用されます)。つまり、大量のメモリを搭載していても、一定期間使用するとメモリがいっぱいになってしまいます。この利点は、開いたばかりのプログラムの起動や、アクセスしたばかりのデータの読み取りが高速になることであり、サーバーにとって非常に有益です。

違い

Windows は常にメモリ内に一定量の空き領域を残します。メモリに空きがある場合でも、プログラムはある程度の空き領域を使用します。仮想メモリ。この利点は、空きメモリを割り当てるだけで、新しいプログラムをより速く起動できることです。

では、Linux ではどうでしょうか?メモリがフルに使用されることが多いため、まずメモリの一部をクリアしてから新しいプログラムに割り当てる必要があるため、新しいプログラムの起動が遅くなります。

Linux カーネルは基本的にすべてのデータをメモリ上に置きますが、メモリが足りない場合はスワップ パーティション (仮想メモリ) に置き、よく使うデータだけを置くという仕組みです。使用頻度の低いデータはメモリ上に配置され、操作されたデータは徐々にスワップパーティションに配置され、必要に応じてハードディスクに書き戻されます。

Windows の処理方式はメモリ操作を重視せず、メモリと仮想メモリを併用するため、IO 負荷が相対的に大きくなり、処理速度が遅くなる場合があります。 Linux の哲学は、メモリを可能な限り使用することです。これは、メモリの速度がハードディスクの速度の 100 倍以上であるためです。

#知識を広げる

Linux は物理メモリを 3 つのレベルに分割して管理します

Linux と Windows のメモリの違いは何ですか?

##システムの物理メモリはいくつかのノード (ノード) に分割されており、1 つのノードがメモリ クラスタ バンクに対応し、各メモリ クラスタがノードとみなされます。 (NODE_DATA(node_id) を使用して、システム内のノード ID 番号が付けられたノードを見つけることができます。)

メモリはノードに分割され、各ノードはシステムのプロセッサに関連付けられます。pg_data_t はカーネルで使用されます。システム内の各ノードをインスタンス化します。ノードは NULL で終わる pgdat_list リンク リストにリンクされ、各ノードは pg_data_tnode_next フィールドを使用して次のノードにリンクされます。 UMA 構造体は contig_page_data の静的な pg_data 構造体のみを使用し、このとき NODE_DATA はグローバルな contig_page_data を直接指します。メモリ管理領域は、特定のメモリ範囲を表すために structzone_struct、zone_t を使用して記述され、下位範囲の 16MB が ZONE_DMA、次にカーネルに直接マッピングできる通常のメモリ領域 ZONE_NORMAL、最後にカーネル セグメントを超える物理領域 アドレス フィールド ZONE_HIGHMEM (0xF8000000~0xFFFFFFFF)、ハイエンド メモリは、システムで予約されている利用可能なメモリ領域であり、カーネルによって直接マップすることはできません。 (ホットプラグおよびメモリ断片化処理と互換性を持たせるために、カーネルはいくつかの論理メモリ領域

1 を導入します。カーネルは、メモリの移行で使用する必要がある疑似メモリ領域 ZONE_MOVEABLE を定義します。物理メモリの断片化を防ぐためのメカニズム。このメモリ領域は、メモリの断片化を最終的に利用するためのものです。

2. ZONE_DEVICE: ホットスワップ可能なデバイスをサポートするために割り当てられた不揮発性メモリ。不揮発性メモリ)。

ページ フレーム (ページ フレーム): メモリの最小単位を表し、ヒープ メモリ内の各ページが構造体ページのインスタンスを作成します。従来、メモリは連続したバイト、つまりバイト配列とみなされ、メモリユニットの番号(アドレス)をバイト配列のインデックスとして使用できます。ページング管理では、数バイトが 4K バイトなどの 1 ページに変換されますが、このときメモリは連続したページ、つまりページ配列となり、物理メモリの各ページはページ フレームになります。メモリにはページ単位で番号が付けられており、この番号はページ配列のインデックスとして機能し、ページ フレーム番号と呼ばれます。 (ページのデータ構造オブジェクトは、mem_map グローバル配列に格納されます。この配列は通常、ZONE_NORMAL の先頭、または小規模メモリ システム内のカーネル イメージのロード用に予約された領域に格納されます。カーネルの下位アドレスをロードした後、メモリ領域の後ろのメモリ領域、つまり ZONE_NORMAL が始まるメモリ ページのデータ構造オブジェクトはすべてこのグローバル配列に格納されます。

ページング ユニットはリニア アドレスを物理アドレスに変換できます。リニア アドレスはページと呼ばれる固定長のグループに分割され、ページ内のリニア アドレスは連続した物理アドレスにマッピングされます。これにより、カーネルは、ページのリニア アドレス全体のストレージ許可を指定せずに、ページの物理アドレスとそのストレージ許可を指定できるようになります。

ページング ユニットは、すべての RAM を固定長のページ フレーム (ページ フレームとも呼ばれます) に分割します。各ページ フレームにはページが含まれます。これは、ページ フレームとページの長さが同じであることを意味します。ページ フレームはメモリの一部であり、したがって記憶領域です。 ----mm_types.h 構造体ページ構造内のマッピングでは、ポインターが保存されるだけでなく、ページが関連付けられていないアドレス空間の匿名メモリ領域に属しているかどうかを判断するために使用される追加情報も保存されます。マッピングを通じて anon_vma を復元するメソッド: anon_vma=(struct anon_vma *)(mapping-PAGE_MAPPING_ANON)。

推奨学習: Linux ビデオ チュートリアル

以上がLinux と Windows のメモリの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。