ホームページ  >  記事  >  運用・保守  >  システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか?

システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか?

嵌入式Linux充电站
嵌入式Linux充电站転載
2023-08-01 15:37:081412ブラウズ

今日の質問: システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができませんか? ######どうしてこれなの?

この質問にはメモリ管理の側面、つまりメモリの断片化が関係しています。

メモリの断片化とは何ですか? メモリの断片化は、Linux の非常に初期の段階で発生しました。初期のメモリの断片化の歴史を理解すると、それを理解するのに役立ちます。

32MB のメモリがあると仮定すると、図 (a) に示すように、オペレーティング システムは最初に最小のメモリ (4MB) を使用し、残りのメモリは 4 つのプロセス用に予約されます。

システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか?プロセス A はオペレーティング システム上で 10MB のメモリを使用し、プロセス B はプロセス A 上で 6MB のメモリを使用し、プロセス C はプロセス B 上で 8MB のメモリを使用します。図 (b) :

システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか? プロセス D は 5MB のメモリを必要とするため、残りのメモリではプロセス D を読み込むのに十分ではなく、このメモリの最後のビットは # を形成します。 # #最初の穴 (記憶の断片)
。ある時点で、システムに十分なメモリがないため、オペレーティング システムがプロセス D を実行する必要があるとします。そのため、プロセス D 用に十分なスペースを確保するには、スワップアウトするプロセスを選択する必要があります。図 (c) に示すように、オペレーティング システムがスワップアウトするプロセス B を選択し、プロセス D が元のプロセス B のアドレス空間にロードされ、

2 番目のホール が作成されるとします。

# オペレーティング システムがある時点でプロセス B を実行する必要があり、スワップアウトするプロセスを選択する必要があるとします。プロセス A がスワップアウトされると仮定すると、次に 3 番目のプロセスがスワップアウトされます図 (d) に示すように、このプロセスはオペレーティング システム
ホール システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか? で発生します。

時間の経過とともに、メモリはますます増加します。減少すると、これらのメモリ ホールは、よく
メモリの断片化 システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか? と呼ばれるものになります。
システムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか?

これを見た後は、メモリの断片化とは何か、またメモリ管理メカニズムである動的分割方法についても理解していることになります。上記の例は、実際には 動的パーティショニング方式 です。オペレーティング システムの初期には、動的パーティショニング方式がメモリの管理に使用されていました。

メモリの断片化の問題を解決するにはどうすればよいですか?

アイデアは実際には非常に単純です。複数の小さなメモリ ブロックを 1 つの大きなメモリ ブロックに配置します

動的パーティショニングを使用していた初期のオペレーティング システムでは、断片化の問題を解決するために、プロセスが占有する領域が連続し、すべての空き領域も連続するようにプロセスを動的に移動しました。 , このようにして、複数の小さなメモリ ブロックがまとめられます。しかし、欠点も非常に明らかであり、 プロセスの移行には多くの時間がかかります。

#内部断片化と外部断片化 メモリ断片化には 2 つのタイプがあります: 内部断片化

および

外部断片化内部断片化

: プログラムに割り当てられたが使用されないメモリの部分

外部断片化

: システム 使用できない小さなメモリ ブロック (上記の動的パーティショニング方法によって生成されたフラグメントなど)

現在、オペレーティング システムはページングまたはセグメンテーション メカニズムを使用してメモリを管理していますが、一部のメモリ フラグメントは必然的に発生します。生成される。

内部断片化と外部断片化の問題を解決するために、Linux は

パートナー システム

slab という 2 つのものを導入しました。 パートナー システムは外部断片化の問題を解決するために使用され、スラブは内部断片化の問題を解決するために使用されます。

パートナーシステムとスラブもメモリ管理の中核となるコンテンツですので、興味のある方は勉強してみてはいかがでしょうか。

概要 したがって、システムに大量のメモリがあるにもかかわらず、大きなメモリ ブロックを割り当てることができない場合は、つまり、大量のメモリの断片化が発生するため、システム内には不連続な小さなメモリが多数存在し、表面上はシステムに空きメモリがたくさんあるように見えますが、実際にはメモリが分散しているだけです。

#

以上がシステムには明らかに大量のメモリがありますが、大きなメモリを割り当てることができないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は嵌入式Linux充电站で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。