Solaris :: VMEM.

仮想メモリアロケータへのPerlインタフェース
今すぐダウンロード

Solaris :: VMEM. ランキングとまとめ

広告

  • Rating:
  • ライセンス:
  • Perl Artistic License
  • 価格:
  • FREE
  • 出版社名:
  • Alexander Golomshtok
  • 出版社のWebサイト:
  • http://search.cpan.org/agolomsh/

Solaris :: VMEM. タグ


Solaris :: VMEM. 説明

仮想メモリアロケータへのPerlインタフェース モダンなアプリケーションは、より多くのメモリとコンピュータの電力が利用可能になるにつれて、ますます多くのメモリを消費する傾向があります。そのため、大きなアレイ処理の重要性が高まっています。また、CPU速度がメモリアクセス速度よりもはるかに速く増加しているため、メモリ効率の相対的な重要性が高くなり、特に64ビットモードアプリケーションの大規模配列では、問題に対処する1つの方法があります。ここで提示されている考え方は、Solarisプラットフォームまたは最新のオペレーティングシステム(OS)に組み込まれている仮想メモリページデマンド機能を使用することです。過度のMalloc割り当て配列の問題に対する解決策は、はるかに大きな配列を作成することですが、そうすることです。 Mallocが必要とするメモリ(スワップスペース)のコストを招くことなく。これがバーチャルメモリアレイが提供するものです。開発者は、通常のMalloc割り当てメモリと同じパフォーマンス特性を持つ非常に大きなアレイを作成できますが、リソースを消費する必要がありません.Solaris :: VMEMパッケージを使用すると、配列に大量の仮想アドレススペースを予約できます。メモリまたはスワップスペースを予約せずに、任意のオブジェクトの。実際のメモリ(スワップ)の割り当ては遅延、つまり、メモリをデータでページごとに入力した場合にのみ発生します。ここで提示されている特定の実装は、UltraSPARC Processors上で実行されているSolarisシステム用です。仮想メモリ(VM)システム環境ではMallocもメモリがデータで埋められるまでメモリを割り当てません。ただし、Mallocは割り当てごとにメモリ(スワップスペース)を予約します。したがって、Mallocで大量のメモリを割り当てる場合は、それをサポートするのに十分なスワップスペースが必要です。そうでなければMallocはNULLを返します。仮想メモリアレイはメモリ(スワップスペース)を予約しません。この違いは、Solaris :: VMEMが多くを予約できます64ビットモードでは、64ビットモードでは特に重要です。仮想アドレス空間のテラバイト。この大きなアドレススペースをサポートするのに十分なディスクスワップスペースを作成する(物理メモリには言うまでも)、今日の安価なディスクでも実用的です。提案された仮想メモリアレイAPIは3つのルーチンで構成されており、その最初の2つは伝統的なマロックフリーに似ています。以下は、これらの機能のプロトタイプと簡単な説明です。$ size = alloc($ var、$ req_size); alloc()指定されたサイズの仮想アドレス空間のチャンクをバイト単位で割り当てました。成功すると、ALLOC()はメモリチャンクの実際のサイズを返し、割り当てられたスペースへの$ var引数を返します。 ARRAYをデータに埋めるときに、VMシステムはこの配列のページごとにメモリを割り当てます。 $ REQ_SIZE値は次のハードウェアページの境界に切り上げられます.reelease($ var); release()$ var引数に関連付けられている仮想メモリスペースを破棄し、それを保持しているすべてのメモリとそれをシステムに返す仮想アドレススペースを返します。 $ newsize = trim($ var、$ req_size); trim()が、与えられた仮想メモリチャンクのサイズを小さな仮想サイズ(バイト単位)に縮小します。このルーチンはオプションです。データのある配列を埋めていて、すでに割り当てられていっぱいになっているよりもメモリを必要としないことを知っている場合は便利です。 $ REQ_SIZE値は次のページ境界まで切り上げられます。関数は仮想メモリチャンクの新しい(実際の)サイズを返します。trim()関数を使用すると、システムに戻る仮想アドレススペースを返すことができます。 「トリミングされた」メモリチャンクの末尾を過ぎているアドレスの範囲にデータを入力した場合、それは対応するメモリを解放します。その結果、データが利用できなくなります。このルーチンの呼び出し$ REQ_SIZE(次のページ境界まで切り上げ)の場合にのみ効果があります。その最後にデータを追加します。 $ Newsize境界を超えた参照は障害になります。あなたが合理的にこの配列を再度拡大する必要がない場合にのみ、メモリのチャンクをトリミングすることをお勧めします..Synopsis Solaris :: VMEMを使用します。 $ size = alloc($ TIE、16384)。 $ size = trim($ TIE、8192);リリース($ TIE);要件: ・Perl


Solaris :: VMEM. 関連ソフトウェア