Solaris :: vmem.

Perl-Schnittstelle zum virtuellen Speicherplatzierer
Jetzt downloaden

Solaris :: vmem. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Alexander Golomshtok
  • Website des Verlags:
  • http://search.cpan.org/~agolomsh/

Solaris :: vmem. Stichworte


Solaris :: vmem. Beschreibung

Perl-Schnittstelle zum virtuellen Speicherplatzierer Moderne Anwendungen neigen dazu, mehr und mehr Speicher zu konsumieren, da mehr Speicher- und Computermacht verfügbar ist, sodass die Wichtigkeit des großen Array-Handlings zunimmt. Die relative Bedeutung der Erinnerungseffizienz wird auch immer höher, da die CPU-Geschwindigkeiten viel schneller erheben als Speicherzugriffsgeschwindigkeiten. Hier ist eine Möglichkeit, das Problem besser zu adressieren, insbesondere für große Arrays in den 64-Bit-Modus-Anwendungen. Die hier vorgestellte Idee besteht darin, die in der Solaris-Plattform oder einem modernen Betriebssystem (OS) integrierten virtuellen Speicher-Funktionen (OS) in der Solaris-Plattform oder ein modernes Betriebssystem (Betriebssystem) zu verwenden. Die Lösung des Problems der untergesäugten Malloc-zugewiesenen Arrays besteht darin, viel größere Arrays zu erstellen, aber dies zu erstellen ohne die Kosten in der Erinnerung (Swap-Speicherplatz), die Malloc erfordert. Dies ist, was virtuelle Speicheranordnungen bereitstellen. Entwickler können sehr große Arrays erstellen, die die gleichen Leistungsmerkmale als normalem Malloc-zugeteiltem Speicher haben, jedoch ohne die Notwendigkeit, die Ressourcen vorne zu konsumieren. Das Solaris :: VMEM-Paket ermöglicht es Ihnen, eine große Menge an virtuellen Adressraum für ein Array zu reservieren von willkürlichen Objekten, ohne den Speicher oder den Swap-Speicherplatz dafür zu reservieren. Die eigentliche Speicherzuteilung (Swap) tritt lauwie auf, dh nur, wenn Sie den Speicher mit Daten füllen, Seite von der Seite. Die hier dargestellte bestimmte Implementierung dient für Solaris-Systeme, die auf UltraSPARC-Prozessoren ausgeführt werden. NOT, dass in Virtual Memory (VM) -Systemumgebungen Malloc auch nicht zugewiesen werden, bis dieser Speicher mit Daten gefüllt ist. Malloc reserviert jedoch den Speicher (Swap-Speicherplatz) für jede Zuteilung. Wenn Sie daher einen großen Speicher mit Malloc zuordnen, müssen Sie ausreichend Swap-Speicherplatz haben, um ihn zu unterstützen, oder es wird Malloc null zurückgegeben. Virtuelle Speicherarrays reservieren nicht den Speicher (Swap-Speicherplatz), sodass Sie virtuelle Arrays erstellen können, die viel größer als der verfügbare Speicher (Swap-Speicherplatz) erstellen können. Diese Differenz ist besonders wichtig im 64-Bit-Modus, in dem Solaris :: VMEM ermöglicht, viele zu reservieren Terabyte des virtuellen Adressraums. Erstellen genügend Festplatten-Swap-Speicherplatz, um diesen großen Adressraum zu unterstützen (ganz zu schweigen von physischem Speicher), ist auch mit den heutigen kostengünstigen Festplatten unpraktisch. Die vorgeschlagenen virtuellen Speicherarrays API besteht aus drei Routinen, von denen die ersten beiden traditionellen Malloc-frei sind. Im Folgenden finden Sie die Prototypen und kurze Beschreibungen dieser Funktionen. $ Size = alloc ($ var, $ req_size); ALLOC () hat einen Teil des virtuellen Adressraums einer bestimmten Größe in Bytes zugeordnet. Bei Erfolg gibt ALLOC () die tatsächliche Größe des Speichers und "Krawatten" das AB-Argument von $ var auf den zugewiesenen Raum zurück. Das VM-System weist den Speicher für dieses Array, Seite nach Seite, während Sie das Array mit Daten füllen. Der Wert von $ REQ_SIZE wird auf die nächste Hardware-Seitengrenze abgerundet. Release ($ var); Release () Zerstört den mit $ var-Argument verknüpften virtuellen Speicherplatz und gibt einen beliebigen Speicher und den virtuellen Adressraum zurück, der dafür wieder in das System reserviert ist. $ needize = Trim ($ var, $ REQ_SIZE); Trim () reduziert die Größe des angegebenen virtuellen Speichers mit einer kleineren virtuellen Größe (in Bytes). Diese Routine ist optional. Es kann nützlich sein, wenn Sie das Array mit Daten gefüllt haben und wissen, dass Sie keine mehr Speicher benötigen, als Sie bereits zugewiesen und gefüllt haben. Der Wert von $ REQ_SIZE ist auf die nächste Seitengrenze gerundet. Die Funkation gibt die neue (tatsächliche) Größe des virtuellen Speicherkunks zurück. Die Funktion der Trimm () ermöglicht es Ihnen, einen virtuellen Adressraum in der Rückseite zum System zurückzugeben. Wenn Sie Daten in den Adressbereich hinter dem Ende des "getrimmten" Speicherblocks übertragen haben, wird der entsprechende Speicher freigegeben, so dass die Daten dort nicht mehr verfügbar sein werden. Aufrufen dieser Routine hat nur einen Effekt, wenn $ REQ_SIZE (auf der nächsten Seitengrenze abgerundet) kleiner als die ursprüngliche virtuelle Größe. Daten zu seinem Ende hinzufügen. Jede Referenz, die über die US-Dollar-Grenze hinausgeht, führt zu einem Fehler. Es ist eine gute Idee, nur ein Stück Speicher zu schneiden, wenn Sie sicherlich sicher sind, dass Sie dieses Array nie wieder erweitern müssen. Synopsis verwenden Solaris :: vmem; $ Größe = Alloc ($ Tie, 16384); $ Größe = Trim ($ TIE, 8192); Release ($ TIE); Anforderungen: · Perl.


Solaris :: vmem. Zugehörige Software