2012-04-27 13 views
1

は、私は私の質問で負担し、それに答える:)私は、プロセスのアドレス空間、仮想メモリとページングについて読んでいたプロセスのアドレス空間と仮想メモリ

してください、この分野の合計noobのです。私はページがRAMに入れ替えられていることを理解していました。すべてのプロセスには4GBの仮想アドレス空間が与えられ、そのうちの1つはユーザー空間用(1または2GBの各プロセス固有)で残りはすべてのプロセスで共通のカーネル領域です。各プロセスの仮想アドレス空間はセカンダリストレージに格納されているため、プロセスを起動するたびにハードディスク上に4 GBが予約されますか?プロセスを開始するたびに私のハードディスクの空き容量が4GB削減されているのを見ることはできません。あるいは、仮想空間がブロックとして予約されていないのですが、小さくても4GBまで増やすことができます。あなたがこの複雑な話題を理解するのを助ける何かを知っているなら、いくつかの光を放ち、トピックにいくつかのリンクを投稿してください。

答えて

1

ここには、数百ページのテキストが詳しく書かれています(このトピックのcsブックを参照してください)。

しかし、あなたは間違っています:仮想メモリはではなく、はセカンダリストレージに格納されています。それはそこにあることができますが、通常はそうではありません。 OSはその情報に応じて、データを通常のメモリに保持する(例えば、プロセスがアクティブなとき)か、hddになっているか(例えば、メモリが不足し、プロセスが非アクティブのとき)に処理する。

仮想化とは、プロセスに対して、データがどこに格納されているかわからず、常に同じポインタを介してアクセスされることを意味します。状況に応じて、システムは基盤となるストレージを変更することができます(データを入れ替えたり入れ替えたりしています)。

+0

ありがとう:この特定のページを

は、以下の参照をチェック位置しています正確にメインメモリ内のどのフレームに伝えテーブル 。ですから、4GBのプロセスアドレス空間は、プロセスが開始されるたびに「設定された」ものではなく、上限のようなものです。 – Venky

+0

@Venky:はい。プロセスが開始されるたびに「設定されていません」。 – flolo

0

仮想アドレス空間はどこにも格納されません。プロセスに割り当てられたメモリのページのみがメモリ/ディスクに格納されます。

メモリの割り当ては、オペレーティングシステムによって異なります。私。 Windowsの割り当てと管理は、対応するmemory functionsを使ってプログラムで行うことができます。たとえば、メモリをアドレス空間にマップするVirtualAllocと、プログラムのアドレス空間に割り当てられたメモリブロックに与えられる属性を指定するVirtualProtect関数です。

-1

これは、この分野の全体的なnoobのための良い質問です。実際には、実行中のプロセスがすべてのメモリを持っていると考えるように作られていますが、このメモリは仮想メモリと呼ばれます。

この回答が役に立ちそうです。

2

まず第一に、仮想アドレスのメモリ管理は二次ストレージを利用せず、プログラムとメインメモリをいくつかのパーティションサイズに分割し、メインメモリパーティションはフレームと呼ばれ、プログラムパーティションはメインメモリとフレームの各パーティション

プログラムを実行したり使用したりすると、カーネルはこのプログラムのすべてのページがメインメモリに収まるかどうかをチェックします。そうすれば、メインメモリ内のすべてのページを他の方法で保持します最初に必要なページ、その後、他のページが後で必要とされるときには、ページの1つ(すなわち、(メインメモリ内のeフレーム)をメインメモリに保存し(ページ置換アルゴリズムを使用して)、次に要求されたページを削除したフレーム(メインメモリから削除するように選択したもの)に転送します。 ページからフレームへのアドレスマッピング迅速な対応のための https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/virtual.html https://www.bottomupcs.com/virtual_addresses.xhtml

関連する問題