仮想メモリ


個人学習内容の整理目的.
注:楊熙載教授(OS)
仮想メモリは、物理メモリサイズの制限を克服することを目的としています.

どうしよう。


すべてのプロセスイメージをメモリに格納するのではなく、現在の実行時にのみ必要な部分です.
メモリに入れて使用します.
例えば、エラー処理、配列、ワープロの並べ替え、表機能など、すぐに使わないものはメモリに入れません.
このようなメリットは何ですか?
つまり、実行可能なプログラムは実際のメモリのプログラムより多い.

方式は。


需要ページング


この場合,一部のみアップロードするためには,プロセス分割が必要であり,主にページ単位を用いる.
このように要求されたページだけをアップロードすることをDemandingPagingと呼ぶ.
では、一つ疑問があります.
分割されたページはメモリ全体に広がり、その過程でページテーブルは連続メモリが割り当てられたようにCPUをだます.
では、分割されたページはページテーブルにマッピングされるべきで、どのようにしてアップロードされたのか、どのようにアップロードされていないのかを判別しますか?
いわゆるvalidbitはテーブルに置いて判断します.
このbitの値は1でメモリに、0ではありません.

Page Fault(ページなし)


では、0であれば、ないページをどのようにインポートしますか?
これをページコンポーネントと呼び、以下の手順を説明します.
  • 有効ビットでメモリにあるかどうかを確認します.
  • 0で割り込みが発生しました.
  • backing storeを参照し、対応するプロセスページにアクセスします.
  • の空きメモリ(フレーム)に割り当てられ、有効ビットを1に変換します.
  • ジョブを再実行します.
  • 初めてページを取る方法は?


    1)Pure Demand Paging
    →最初は何も要求しないと、何も持ってこない.
    つまり、必要なときだけ持ってきます.
    多くのメモリを節約できますが、必要に応じて多くのプロセスが行われるため、時間がかかります.
    2)Prepaging
    →今は不要で、必要と思われるページをメモリに入れます.
    **Pure Demand Paging** 에 비해 페이지 부재가 발생할 확률은 낮으며 속도가 빨라질 수 있으나, 메모리 절약은 상대적으로 덜 된다.
    3)Swapping
    →Demanding Pagingと同様にbacking storeとメモリの間を交互に切り替える点は同じですが、swappingはプロセス単位です.

    ページの置換


    先にメモリ不足のみを考慮して説明したが、実行を続けるとページ単位で必要なコンテンツをロードしてもメモリがいっぱいになる瞬間がある.
    このとき、メモリ内のページを下と上に操作することをページ置換と呼びます.
    このときbacking storeに戻るページを被害者ページと呼ぶ.

    では、どのページを追い出すべきですか。


    cpuによって実行された変更を排除することが望ましい.
    変更後の操作をbacking storeに反映する必要があるためです.
    注意:valid bitのように、同じ原理で変更の有無を確認できるmodify bitを追加してチェックします.
    変更されていないコンテンツには、さまざまな方法があります.
    1.ランダム選択Random→その名の通り.しかし、性能は保証されません.
    2.FIFOを選択→メモリに最初にアップロードします.

  • OPT→最長時間使用しないページを選択します.
               단, 미래를 예측해야 하므로 비현실적이다. 

  • 最新使用の(LRU)→最近使用していないものは、以降も使用しません.
  • 現在、ほとんどの環境でLRUが使用されています.
  • それ以外にも、いろいろな方法があります.