0

最近、コンピュータシステムで、プライマリメモリ(RAM)がセカンダリメモリ(HDD)に匹敵する場合、そのようなコンピュータシステムに仮想メモリを実装する必要があるかどうかという質問がありました。ページングとセグメンテーションには、純粋に処理のオーバーヘッドであるコンテキストスイッチングが必要なため、仮想メモリの利点は、必要な処理のオーバーヘッドを超えますか?誰かがこの質問で私を助けることができますか?ありがとう

4

3 に答える 3

3

確かに、仮想メモリを使用すると、プログラムで物理的に使用可能なメモリの合計をコミット(つまり割り当て)することができます。ただし、これは仮想メモリがある場合の多くの利点の1つにすぎず、最も重要なものでもありません。個人的には、PCを使用するときは、定期的にタスクマネージャーをチェックして、実際のRAMの使用にどれだけ近づいているかを確認しています。私が絶えず行き過ぎているなら、私は行き、RAMをもっと購入します。

仮想メモリを使用するすべてのOSの重要な属性は、すべてのプロセスが独自の分離されたアドレス空間を持っていることです。つまり、1GBのRAMを搭載し、50のプロセスを実行しているマシンを使用できますが、各プロセスには4GBのアドレス可能なメモリスペースがあります(32ビットOSを想定)。どうしてそれが重要ですか?「物事を偽って」、そこにないRAMを使用できるわけではありません。調べてスワッピングが開始されるとすぐに、仮想メモリマネージャーがスラッシングを開始し、パフォーマンスが停止します。これのはるかに重要な意味は、各プログラムに独自のアドレススペースがある場合、ランダムなメモリ位置に書き込んで別のプログラムに影響を与える方法がないということです。

それが主な利点です:安定性/信頼性。Windows 95では、オペレーティングシステム全体をクラッシュさせるアプリケーションを作成できます。W2K +では、自分のアドレス空間全体を舗装し、自分以外のものをクラッシュさせるプログラムを作成することは不可能です。

他にもいくつかの利点があります。実行可能ファイルとDLLがRAMにロードされると、仮想メモリマネージャーは、同じバイナリが複数回ロードされたことを検出でき、複数のプロセスが同じ物理RAMを共有するようになります。仮想メモリレベルでは、各プロセスに独自のコピーがあるように見えますが、それより低いレベルでは、すべてが1つのスポットにマップされます。これにより、プログラムの起動が高速化され、各DLLが1回だけロードされるため、メモリ使用量も最適化されます。

仮想メモリマネージャを使用すると、ファイルを仮想アドレス空間のページにマッピングするだけでファイルI/Oを実行することもできます。ファイルを操作するための興味深い代替手段を導入することに加えて、これにより、読み取り/書き込みページを備えた物理RAMをプロセス間で意図的に共有して、非常に効率的なプロセス間通信(IPC)を実現する共有メモリセグメントの実装も可能になります。

これらすべての利点があるため、ほとんどの場合、コミットの合計サイズよりも多くの物理RAMを使用することを検討し、最新のCPUがハードウェアに直接組み込まれた仮想アドレスマッピングをサポートしていることを考慮すると、仮想メモリのオーバーヘッドが発生します。マネージャーは実際には非常に最小限です。一方、多くの異なるベンダーの多くのアプリケーションが同時に実行される環境では、プロセスのアドレス空間は貴重です。

于 2011-09-29T04:17:38.763 に答える
0

仮想メモリが機能している

それはあなたの質問全体に答えないかもしれません。しかし、それは私には答えのようです

于 2011-09-29T03:51:41.173 に答える
0

私はこの問題についての私の理解を捨てるつもりです、それをバックアップするための背景の資格は全くありません。反対票を投じるつもりですか?:)

まず、一次メモリは二次メモリに匹敵すると言うことで、私はあなたがスペースの観点から意味していると思います。(結局のところ、RAMへのアクセスはストレージへのアクセスよりも高速です)。

今、私が理解しているように、

ランダムアクセスメモリは、オペレーティングシステムが格納できるアドレスであるアドレススペースによって制限されます。32ビットオペレーティングシステムは約4GBのRAMに制限され、64ビットオペレーティングシステムは(理論的には)2.3EXABYTESのRAMに制限されます。 Windows 7では、Ultimateエディションでは200 GB、Server2008では2TBに制限されています。

もちろん、まだ複数の要因があります。

  • RAMの製造コスト。(まだ数百の単一のRAMthingie(?)で8GB)

  • マザーボードのDIMMスロット(4スロットのボードを見たことがあります)

しかし、この議論の目的のために、これらの制限を無視して、スペースについてだけ話しましょう。


今日のアプリケーションがどのようにメモリを処理するかについて話しましょう。アプリケーションは、メモリの量を認識していません。ほとんどの場合、オペレーティングシステムからメモリを要求するだけです。オペレーティングシステムは、実行中の各アプリケーションに割り当てられているアドレス空間を管理する役割を果たします。それが十分でない場合、まあ、悪いことが起こります。

しかし、確かにRAMの理論上の2EXABYTESを使用すると、不足することはありませんか?

さて、昔の有名人は、64kBを超えるRAMは必要ないと言っていました。

最近のほとんどのアプリケーションは貪欲であるため(オペレーティングシステムが提供するのと同じくらい多くのアプリケーションを使用します)、十分に強力なコンピューターで十分なアプリケーションを実行すると、理論的には物理メモリのストレージ制限を超える可能性があります。その場合、余分に必要なメモリを補うために仮想メモリが必要になります。

だからあなたの質問に答えるために:(問題に関する限られた知識から形成された私の謙虚な意見では)はい、あなたはまだ仮想メモリを実装する必要があります。


明らかに、これらすべてを取り、あなた自身の研究をしてください。私はこれをコミュニティウィキに変えているので、他の人がそれを編集したり、明らかに間違っている場合は削除したりできます:)

于 2011-09-29T04:17:34.160 に答える