非常に一般的かつ単純に言えば、仮想メモリ実装の詳細を考慮せずに、開発者は常にVM実装に欠けている洞察力に関する知識を持っています。
開発者はいつでも「このオーディオファイルをロードする必要はありません。内部の音楽はゲームオーバースクリーンでのみ使用されます」と言うことができます。ゲームオーバースクリーンの直後に、開発者は「物理メモリにこのオーディオクリップはもう必要ありません。このゲームオーバースクリーンでのみ使用されます。」と言うことができます。
OSにはそのような先見の明はありません。しばらくの間アクセスされなかったために、一部のオーディオクリップが物理メモリで不要になったことを、後で多くのページフォールトによって把握できる場合があります。しかし、先見性を後知恵に変えると、多くのページフォールトが発生し、多くのページフォールトは、ビデオゲームと同様にタイムクリティカルなソフトウェアのフレームレートの中断につながります。そこでは、そのような問題を回避したい場合、開発者の先見性が本当に役立ちます。
そして、それはハードウェアとソフトウェアに関係なく概念的に当てはまります。メモリ内のページングが高価であると仮定すると、開発者の洞察は常にその費用の削減に役立ちます。
さらに広い意味で言えば、ハードウェアデザイナー、コンパイラデザイナー、OS /ドライバーデザイナー、アプリケーション開発者の間には、終わりのないサイクルがあります。ハードウェア/コンパイラ/ OS /ドライバの開発者は、通常のメモリアクセスパターンに基づいて、平均的なアプリケーションを高速化するために最適化を実装しようとすることが多く、場合によっては「希望どおりにコードを書くことができるはずです。高速でなければなりません。」しかし、そのタイプについて何らかの考えがあった場合、通常、パフォーマンスが重要なフィールドでは失敗します。パフォーマンスが重要な開発者は、コンパイラ、ハードウェア、OS、ドライバなどの複雑な詳細を学び始め、具体的にコードを書き始めるためです。可能な限り最速のコード(キャッシュに適したコードのプリフェッチ、ホット/コールドフィールド分割、SoAsなど)を書くために、それを可能な限り活用するように設計されています。そしてそれは終わらないゲームのようなものです。開発者はパフォーマンスをめぐって競合しているため、パフォーマンスが重要なフィールドでは、これらのものがブラックボックスとして扱われることはありません。
個人的には、仮想メモリが存在しないことを願っています。仮想メモリが存在すると、極端になりすぎて、不測の事態に陥る傾向があり、事態が本当に使い物にならなくなると、パフォーマンスが大幅に低下します。。一部のアプリケーションを使用して、いくつかの入力フィールドに酔ったときに誤って余分な数字を1つまたは2つ入力した場合に、物理メモリがすぐに使い果たされて、OSがクロールされてしまい、 tプログレスバーのキャンセルボタンをクリックすることもできます。Ctrl+ Alt + Delを押してプロセスを終了し、飲み物をこぼして自分に呪いをかけている間、10分間待たなければなりませんでした。 SSDに保存されているページファイルにもかかわらず、そのような場合は、「メモリ不足」エラーか何かを優先したいと思います。この時点で、17個のポルノのタブのいくつかを閉じて(大丈夫です。とにかくお気に入りをブックマークします)、メモリを解放してすぐに実行します。私のビジネスを再開します。