tutorial net descargar compiler compiladores common lisp common-lisp

net - ¿Qué es una imagen Lisp?



lisp descargar (3)

Básicamente, me gustaría saber qué es una imagen Lisp. ¿Es una porción de memoria que contiene el intérprete de Lisp y uno o más programas o qué?


Varias implementaciones de lenguaje usan una ''imagen'' para almacenar '''' todo '''' que está ahí en el contexto actual. Esta imagen puede tener varias capas de abstracción de compilación (es decir, un nivel de análisis intermedio, un código de bytes intermedio, códigos operativos nativos). Cargar esta imagen será mucho más rápido que compilar todos los archivos fuente. Es muy parecido a la función de hibernación, a nivel de programa.

Por ejemplo, si su implementación de lisp usa una imagen, primero que usted (o el proveedor del compilador) iniciará la correa de una imagen, y la guardará.

Luego tiene dos opciones: (1) cargar su archivo de lisp cada vez que invoque lisp o (2) cargar todo su ceceo, guardar la imagen y usar esta imagen

Espero que ayude


En general, es la parte de almacenamiento del proceso de ceceo (es decir, todas las funciones y datos de "lisp"), pero no partes del binario de ceceo subyacente. En el lado positivo, esto le da una puesta en marcha rápida, ya que no hay (esencialmente) ningún mantenimiento de libros para cargar la imagen, todo está allí. Por otro lado, significa que faltan archivos abiertos, tomas de corriente y lo que-tú-tienes, por lo que guardar imágenes como un tipo de control requerirá un poco de implementación para que funcione.


La imagen Lisp como memoria objeto de dumping

La imagen suele ser un archivo. Es un volcado de la memoria de un sistema Lisp. Contiene todas las funciones (a menudo compiladas en código de máquina), valores de variables, símbolos, etc. del sistema Lisp. Es una instantánea de un Lisp en ejecución.

Para crear una imagen, uno inicia el Lisp, lo usa por un tiempo y luego uno volca una imagen (el nombre de la función para hacer eso depende de la implementación).

Usando una imagen Lisp

La próxima vez que se reinicie Lisp, uno puede usar la imagen objeto de dumping y recupera el estado aproximadamente anterior. Al descargar una imagen, también se le puede decir al Lisp qué debería hacer cuando se inicia la imagen objeto de dumping. De esa forma uno puede volver a conectarse a los servidores, abrir archivos de nuevo, etc.

Para iniciar dicho sistema Lisp, uno necesita un kernel y una imagen. A veces, el Lisp puede poner ambos en un solo archivo, de modo que un archivo ejecutable contenga tanto el kernel (con alguna funcionalidad de tiempo de ejecución) como los datos de imagen.

En una máquina Lisp (una computadora que ejecuta un sistema operativo Lisp), un tipo de cargador de arranque (FEP, procesador front-end) puede cargar la imagen (llamada ''mundo'') en la memoria y luego iniciar esta imagen. En este caso no hay kernel y todo lo que se ejecuta en la computadora es esta imagen Lisp, que contiene todas las funcionalidades (intérprete, compilador, gestión de memoria, GC, pila de red, controladores, ...). Básicamente es un sistema operativo en un solo archivo.

Algunos sistemas Lisp optimizarán la memoria antes de volcar una imagen. Pueden hacer una recolección de basura, ordenar los objetos en la memoria, etc.

¿Por qué usar imágenes?

¿Por qué uno usaría imágenes? Ahorra tiempo para cargar cosas y uno puede dar sistemas Lisp preconfigurados con código de aplicación y datos a los usuarios. Comenzar una implementación de Common Lisp con una imagen guardada suele ser rápido: unos pocos milisegundos en una computadora actual.

Como la imagen de Lisp puede contener muchas funcionalidades (un compilador, incluso un entorno de desarrollo, mucha información de depuración, ...) suele tener varios megabytes de tamaño.

Usar imágenes en Lisp es muy similar a lo que hacen los sistemas Smalltalk. Squeak, por ejemplo, también usa una imagen de código Smalltalk y datos y un ejecutable en tiempo de ejecución. Existe una diferencia práctica: la mayoría de los sistemas Lisp actuales usan código de máquina compilado. Por lo tanto, la imagen no es portátil entre diferentes arquitecturas de procesador (x86, x86-64, SPARC, POWER, ARM, ...) o incluso sistemas operativos.

Historia

Dichas imágenes Lisp han estado en uso desde hace mucho tiempo. Por ejemplo, la función SYSOUT en BBN Lisp de 1967 creó dicha imagen. SYSIN leería una imagen así al inicio.

Ejemplos de funciones para guardar imágenes

Para ver un ejemplo, vea la función save-image de LispWorks o lea el manual de SBCL para guardar las imágenes centrales .