オペレーティングシステムのメモリ管理、仮想メモリ、Pythonのガベージコレクション

ページングメカニズムとは何ですか?

定義:論理アドレスと分離されたメモリ割り当て管理スキームの物理アドレス

  • プログラムロジックアドレスは固定サイズのページに分割され(ページ)
  • 物理アドレスは、同じサイズのフレーム(フレーム)に分割されています
  • によってページ・テーブルに対応する論理アドレスと物理アドレス

 

セグメンテーションメカニズム

目的:コードのセグメントのニーズを満たすためのロジック(より具体的には次を検索することをお勧めします)

  • データの共有、データ保護、ダイナミックリンク。
  • セグメント・テーブルによって論理アドレスと物理アドレスとの間のマッピング関係を実現します。
  • 各セグメントは、連続した内部メモリの割り当てであり、そして段落間離散分布です。

 

ページングとセグメンテーションの間の差

  • ページ(メモリをより効率的に使用するため、メモリの断片化を減らす)を提唱ビューのメモリ使用率ポイントの離散分布メカニズムです。
  • セクションは、ユーザの視点のためのデータ保護、分離目的のための管理機構です。
  • ページサイズは、固定されたオペレーティングシステムによって決定され、セグメントのサイズは固定されておらず、ユーザプログラムによって決定されます。

仮想メモリとは何ですか。

定義:一時的に未使用のメモリ情報の一部は、ハードディスクに保存されています。

  • 局所性の原則は、プログラムがメモリに必要な情報の一部のみを実行している間。
  • ハードディスク上のメモリの一時的な不要なコンテンツ。
  • システムは、仮想メモリと呼ばれ、実際のメモリ容量よりも大きいと多くのメモリを提供しているようです。

 

メモリジッタは何である(バンプ)

 

定義:スケジューリング行動の性質は頻繁にページです

  • 頻繁にスケジュールページでは、プロセスがページフォルトを発生し続けます。
  • 交換後(仮想メモリへの)ページ、およびこのページを必要とし続けます。
  • あまりにも多くの操作手順は、ページ置換ポリシーは良くありません。プロセスを終了するか、物理メモリを増やします。

 

Pythonのガベージコレクションの原理。 

  • ない循環参照:ちょうど参照カウント(短所を使用
    • 参照カウント:C言語を参照し、各オブジェクトは、REFフィールドの代表であるそのうちの一つ、いくつかのフィールドを、有しているPythonはオブジェクトの数であります
    • = [1]#このときオブジェクトリスト[1]参考文献1の値です。
      B =#[1]参考文献2の値になります
      この時間は、[1] 1 REFなる= [1,2,3]#

      プリント(B)#結果:[1]

      この時点で、唯一の#[1]参照Bであります
      デル(B)#オブジェクトを排除するために、そのオブジェクトの参照カウントを減らすことではありません。
      #印刷(b)のエラー、bが定義されていません
      #[1]、回収、0 REFなります

      以下はipythonで何を示しています

    • 1 [1]:インポートSYS                                                                               
       2  
      。3 [2] = A [1,2 ]                                                                                
       。4  
      。5 [3。]:sys.getrefcount(A)#これは、関数呼び出しの参照です。                                                         
      6 OUT [3]:2
       。7  
      8。 [4]:B = 1                                                                                    
       9。 
      10 [5]:sys.getrefcount(1 )小さな整数#のPythonオブジェクトプール、オブジェクト参照の内部実装が多いです                                                                 
      11 OUT [5]:3337

      参照カウント、そして、a、bは参照1となっている場合にのみ、循環参照、次のコードは、排除することはできません。

    • = [1 ]     
      B = [2 ] 
      
      a.append(B)
      b.append(A)
      
      デルA
       デル B

       

  • 世代参照カウント(より詳細な検索バー)に対処するためのマークの除去とリサイクル
    •   ルートオブジェクトから明確なマーカーオブジェクトは、単純反復クエリダウンを達成することができ、達成不可能なオブジェクトであり、そのような上記のコード、a及びbと、2つの分離オブジェクトをしている標識されています。孤立したオブジェクトを削除します。
    •        世代回復:Pythonの対象物がライフサイクルの三世代、0,1,2を有し、各世代が二重にリンクされたリストである、いくつかのノード(使用しない)を削除した後世代0は、最初を形成するために新たなノードを生成しました世代は、というように、通常ノード通路0の数が一定値に世代収集の時点に到達したとき。

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/dairuiquan/p/11785339.html