Solaris :: VMEM

Perl-interface naar virtuele geheugen Allocator
Download nu

Solaris :: VMEM Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Alexander Golomshtok
  • Uitgever website:
  • http://search.cpan.org/~agolomsh/

Solaris :: VMEM Tags


Solaris :: VMEM Beschrijving

Perl-interface naar virtuele geheugen Allocator Moderne toepassingen hebben de neiging om steeds meer geheugen te consumeren als meer geheugen en computervermogen beschikbaar komen, dus het belang van grote arrayafhandeling is toegenomen. Ook wordt het relatieve belang van geheugenefficiëntie hoger en hoger, omdat CPU-snelheden veel sneller toenemen dan geheugentoegangsnelheden. Er is een manier om het probleem beter aan te pakken, met name voor grote arrays in de 64-bits modusaanvragen. Het hier gepresenteerde idee is om de virtuele geheugenpagina-demand-mogelijkheden te gebruiken die zijn ingebouwd in het Solaris-platform of een modern besturingssysteem (OS). De oplossing voor het probleem van ondermaatse malloc-toegewezen arrays is om veel grotere arrays te creëren, maar om dit te maken zonder de kosten in het geheugen (swap-ruimte) te maken die MALLOC vereist. Dit is wat virtuele geheugenarrays bieden. Ontwikkelaars kunnen zeer grote arrays maken die dezelfde prestatiekenmerken hebben als normaal Malloc-toegewezen geheugen, maar zonder de noodzaak om de middelen vooraan te consumeren. Het Solaris :: VMEM-pakket kunt u een grote hoeveelheid virtuele adresruimte voor een array reserveren van willekeurige objecten, zonder het geheugen of de spatie voor het reserveren ervan te reserveren. De daadwerkelijke geheugen (swap) -toewijzing vindt lui plaats, dat is alleen wanneer u het geheugen invult met gegevens, pagina op pagina. De specifieke implementatie die hier wordt gepresenteerd, is voor SolraSis-systemen die op ULTRAPAPARC-processors worden uitgevoerd.Note dat in Virtual Memory (VM) System-omgevingen MALLOC ook geen geheugen toewijst, totdat dat geheugen is gevuld met gegevens. Malloc behoudt zich echter voor elke toewijzing het geheugen (swapruimte) voor elke toewijzing. Daarom, als u een grote hoeveelheid geheugen met MALLOC wijst, moet u voldoende swapruimte hebben om het te ondersteunen, of anders zal Malloc NULL retourneren. Virtuele geheugenarrays reserveren geen geheugen (swap-ruimte), zodat u virtuele arrays veel groter kunt maken dan het beschikbare geheugen (swapruimte). Dit verschil is vooral belangrijk in de 64-bits modus waar Solaris: VMEM u hiermee kunt reserveren terabytes van virtuele adresruimte. Het creëren van voldoende schijfwisselruimte om deze veel adresruimte te ondersteunen (om te vergeten fysiek geheugen) is onpraktisch, zelfs met de goedkope schijven van vandaag. De voorgestelde virtuele geheugenarrays API bestaat uit drie routines, waarvan de eerste twee op traditionele Malloc-vrij lijken. De volgende zijn de prototypen en korte beschrijvingen van deze functies. $ Size = alloc ($ var, $ req_size); Alloc () heeft een stuk virtuele adresruimte van een gegeven formaat toegewezen, in bytes. Op succes retourneert Alloc () de werkelijke grootte van het geheugenchide en "banden" het $ var-argument voor de toegewezen ruimte. Het VM-systeem wijst het geheugen toe voor deze array, pagina op pagina, terwijl u de array met gegevens invult. De waarde van de $ REQ_SIZE is afgerond op de volgende hardware-pagina-grens. Release ($ Var); Release () vernietigt de virtuele geheugenruimte die is geassocieerd met $ Var-argument en retourneert elk geheugen en de virtuele adresruimte gereserveerd voor het terug naar het systeem. $ Notical = Trim ($ var, $ req_size); Trim () vermindert de grootte van het gegeven virtuele geheugenblok naar een kleinere virtuele grootte (in bytes). Deze routine is optioneel. Het kan handig zijn wanneer u de array met gegevens hebt gevuld en weet dat u niet meer geheugen meer nodig hebt dan u al hebt toegewezen en gevuld. De waarde van $ REQ_SIZE is afgerond op de begrenzing van de volgende pagina. De functie retourneert de nieuwe (werkelijke) grootte van het virtuele geheugenchunk. De functie voor Trim () stelt u in staat om een virtuele adresruimte in de rug naar het systeem te retourneren. Als u gegevens in het bereik van adressen hebt geplaatst langs het einde van het geheugen van de "bijgesneden" geheugen, bevrijdt deze het overeenkomstige geheugen, zodanig dat de gegevens die er niet langer beschikbaar zijn. Als u deze routine oproept, heeft alleen een effect als $ REQ_SIZE (afgerond tot de volgende paginagrens) kleiner is dan de originele virtuele maat. Zonder u een virtueel geheugen met trimmade hebt getrimd (), kunt u het niet meer laten groeien gegevens toevoegen aan het einde. Elke referentie die verder gaat dan de $ Newsize grens zal resulteren in een fout. Het is een goed idee om alleen een stuk geheugen in te korten als je redelijk zeker weet dat je deze array nooit meer wilt uitbreiden. Synopsis Gebruik Solaris: VMEM; $ size = alloc ($ das, 16384); $ size = trim ($ das, 8192); RELEASE ($ TIE); Vereisten: · Perl


Solaris :: VMEM Gerelateerde software