Solaris :: VMEM

Interfaz Perl a asignador de memoria virtual
Descargar ahora

Solaris :: VMEM Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Alexander Golomshtok
  • Sitio web del editor:
  • http://search.cpan.org/~agolomsh/

Solaris :: VMEM Etiquetas


Solaris :: VMEM Descripción

Interfaz Perl al asignador de memoria virtual Las aplicaciones modernas tienden a consumir cada vez más memoria a medida que más memoria y alimentación de computadora estén disponibles, por lo que la importancia de la gran manipulación de la matriz ha aumentado. Además, la importancia relativa de la eficiencia de la memoria se está volviendo mayor y más alta, ya que las velocidades de la CPU están aumentando mucho más rápido que la velocidad de acceso a la memoria. Aquí hay una forma de abordar mejor el problema, especialmente para matrices grandes en las aplicaciones de modo de 64 bits. La idea presentada aquí es utilizar las capacidades de la Página de la Página de Memoria Virtual incorporada en la plataforma Solaris o cualquier sistema operativo moderno (OS). La solución al problema de las matrices asignadas por malloces de tamaño determinado es crear matrices mucho más grandes, pero para hacerlo sin incurrir en los costos en la memoria (espacio de intercambio) que requiere malloc. Esto es lo que proporcionan las matrices de memoria virtual. Los desarrolladores pueden crear matrices muy grandes que tienen las mismas características de rendimiento que la memoria asignada por mallaC normal, pero sin la necesidad de consumir los recursos por adelantos. El paquete Solaris :: VMEM le permite reservar una gran cantidad de espacio de direcciones virtuales para una matriz de objetos arbitrarios, sin reservar la memoria o el espacio para intercambiarlo. La asignación de la memoria real (swap) se produce perezosamente, es decir, solo cuando llena la memoria con datos, página por página. La implementación particular presentada aquí es para los sistemas Solaris que se ejecutan en procesadores UltrasPARC. Nota que en los entornos del sistema de memoria virtual (VM) también no asigna la memoria hasta que la memoria esté llena de datos. Sin embargo, MALLOC se reserva la memoria (Swap Space) para cada asignación. Por lo tanto, si asigna una gran cantidad de memoria con malloc, debe tener suficiente espacio de intercambio para respaldarlo, o bien Malloc devolverá NULL. Las matrices de memoria virtual no reservan memoria (espacio de intercambio), lo que le permite crear matrices virtuales mucho más grandes que la memoria disponible (espacio de intercambio). Esta diferencia es especialmente importante en el modo de 64 bits, donde Solaris :: VMEM le permite reservar muchos Terabytes de espacio de direcciones virtuales. Crear suficiente espacio de intercambio de discos para soportar este espacio de direcciones (sin mencionar la memoria física) es impráctico incluso con los discos económicos de hoy. Las matrices de memoria virtual propuestas API consta de tres rutinas, las dos primeras de las cuales se asemejan a la libre de malloc. Los siguientes son los prototipos y las breves descripciones de estas funciones. $ Tamaño = ALLOC ($ var, $ req_size); Alloc () asignó un trozo de espacio virtual de dirección de un tamaño dado, en bytes. Sobre el éxito, Alloc () devuelve el tamaño real del trozo de memoria y los "vínculos" del argumento $ Var al espacio asignado. El sistema VM asignará la memoria para esta matriz, página por página, a medida que llena la matriz con datos. El valor de $ req_size se redondea al siguiente límite de la página de hardware. Reelease ($ var); La versión () destruye el espacio de memoria virtual asociado con $ var argument y devuelve cualquier memoria y el espacio de direcciones virtual reservado para el sistema. $ Newsize = RECT ($ var, $ req_size); recorte () reduce el tamaño del trozo de memoria virtual dado a un tamaño virtual más pequeño (en bytes). Esta rutina es opcional. Puede ser útil cuando haya llenado la matriz con datos y sepa que no necesitará más memoria de la que ya ha asignado y lleno. El valor de $ req_size se redondea hasta el límite de la página siguiente. La funcionalización devuelve el nuevo tamaño (real) del trozo de memoria virtual. La función TRIM () le permite devolver un espacio de direcciones virtuales en la parte posterior al sistema. Si ha puesto algún dato en el rango de direcciones más allá del extremo del trozo de memoria "recortado", liberará la memoria correspondiente, de manera que los datos ya no estarán disponibles. Llamar a esta rutina solo tiene un efecto si $ req_size (redondeado hasta el límite de la página siguiente) es más pequeño que el tamaño virtual original. También ha recortado un trozo de memoria virtual con TRIM (), no puede cultivarlo más por Agregando datos a su fin. Cualquier referencia más allá del límite de $ Newsize resultará en una falla. Es una buena idea recortar un trozo de memoria solo si está razonablemente seguro de que no necesitará expandir esta matriz otra vez .Synopsis Use Solaris :: VMEM; $ tamaño = ALLOC ($ TIE, 16384); $ talla = recortar ($ corbata, 8192); liberación ($ corbata); Requisitos: · Perl


Solaris :: VMEM Software relacionado