2010-08-24 10 views

Respuesta

22

Los sistemas de programación más populares separan el código de programa (en forma de definiciones de clase, funciones o procedimientos) del estado del programa (como objetos u otras formas de datos de aplicación). Cargan el código del programa cuando se inicia una aplicación, y cualquier estado de aplicación anterior debe recrearse explícitamente a partir de archivos de configuración u otras fuentes de datos. Cualquier configuración que el programador de la aplicación no guarde explícitamente, debe realizar una copia de seguridad cada vez que reinicie.

Muchos sistemas de Smalltalk, sin embargo, no diferencian entre datos de aplicación (objetos) y código (clases). De hecho, las clases son objetos en sí mismos. Por lo tanto, la mayoría de los sistemas Smalltalk almacenan todo el estado de la aplicación (incluidos los objetos Clase y no Clase) en un archivo de imagen. La máquina virtual Smalltalk puede cargar la imagen para restaurar un sistema similar a Smalltalk a un estado anterior.

http://en.wikipedia.org/wiki/Smalltalk#Image-based_persistence

+10

Otra forma de verlo es que esto es realmente como las imágenes del sistema que obtiene con el software de virtualización del SO como VirtualBox o VMWare. Excepto que el sistema operativo en la imagen es el sistema Smalltalk, y no está organizado como un sistema de archivos, sino como objetos. –

5

Cuando se inicia Smalltalk VM, carga un estado guardado de objetos (sí: incluyendo cadenas de archivos abiertos, ventanas, hilos y más) de la "imagen" en su memoria y reanuda la ejecución donde lo dejó cuando se guardó la imagen . En cualquier momento durante su trabajo, puede "guardar una imagen" (también conocido como una instantánea del estado general actual) en un archivo de imagen. Puede mantener múltiples imágenes en su disco. Útil si trabajas en diferentes proyectos. Las imágenes son a menudo (pero no en todos los sistemas smalltalk) portátiles a través de arquitecturas; por ejemplo, una imagen chirriante se puede cargar en bot una ventana y un Mac (e incluso un androide) chirrían VM. Las imágenes no son portables en dialectos, y a veces no en versiones diferentes dentro de un dialecto.

Las imágenes generalmente contienen todo, incluso el depurador, compilador, editores, navegadores, etc. Sin embargo, para el despliegue, a veces es útil "quitar" (es decir, eliminar elementos no utilizados) de una imagen, ya sea para ocultar secretos (;) o para hacerlo más pequeño (para dispositivos incrustados o móviles). La mayoría de los Smalltalks no pueden vivir sin una imagen, con la excepción de Smalltalk/X y (creo) S # -Smalltalk (pero estoy en el hielo delgado aquí ...)

Para guardar y transportar el código fuente, las imágenes son no es útil: use archivado en formato estándar o en xml o en cualquier otro formato de transporte (hay muchos). Las imágenes tampoco son útiles para ordenar/desasignar; utilice xml, binarystorage, bases de datos, glorb o cualquier otro método de serialización para eso.

+1

Una pequeña precisión: las secuencias de archivos no se mantienen abiertas en la imagen guardada. Algunas clases pueden registrarse para hacer la limpieza/reinicialización cuando la imagen se guarda o se vuelve a cargar. Los descriptores de archivos, los sockets, el mapa de bits de la pantalla ... apuntan al estado que está fuera de la imagen, por lo que no serían válidos si el archivo se elimina mientras la imagen está detenida o si la imagen se mueve a un host diferente. Los subprocesos se implementan completamente dentro de la imagen (como los subprocesos verdes de Java), por lo que no se asignan a un subproceso del sistema y se pueden guardar como están, con un depurador etc. –

+1

Tiene razón, pero en realidad: Smalltalk/X incluso intenta volver a abrir un archivo y reubicarlo, si es un archivo normal. Es, por supuesto, no realizado por la máquina virtual, sino por los métodos de reinicialización opcionales de las clases (en realidad: returnFromSnapshot). Además, en st/x, no hay mapa de bits de pantalla, sino una cantidad de win32 o x topWindows para recrear. Justo lo suficiente, en realidad depende del programador agregar tal método returnFromSnapshot y decidir qué se puede reconstruir y cómo se puede reconstruir después de una llamada snapin. – blabla999

+1

(por supuesto, también tiene razón, que el estado es externo a la imagen; sin embargo, si conserva una copia de (algunos) el estado, puede volver a crear una ventana, reemplazar el antiguo identificador de ventana, reasignar y volver a dibujar nueva ventana, por ejemplo. Y eso es lo que se hace en los métodos returnFromSnapshot). – blabla999

1

recomiendo que lea http://pharobyexample.org/ primer capítulo dice:

"La imagen del sistema actual es una instantánea de un sistema de Pharo correr, congelado en el tiempo Se compone de dos archivos:. .Imagen un archivo, que contiene el estado de todos los objetos del sistema (incluidas clases y métodos, ya que también son objetos), y un archivo .changes, que contiene un registro de todos los de los cambios en el código fuente del sistema En la Figura 1.1, estos archivos son llamados pharo.image y pharo.changes."

HTH

16

La imagen Smalltalk es un animal muy interesante. Verlo como una especie de inmortalidad. Muchos sistemas actuales de Smalltalk, Pharo, Squeak, entre ellos VisualWorks, comparten un ancestro común, es decir, una imagen Smalltalk de Xerox PARC. Sin embargo, este ancestro común no es algo remoto, sino que sigue vivo en esos sistemas modernos. Las variantes modernas se produjeron enviando mensajes al objetos en esa imagen. Algunos de esos mensajes realmente transformaron los objetos actuales. Las clases son objetos completos, y la creación de nuevas clases se hace enviando mensajes a los objetos de la clase. Algunos de los objetos en una imagen Smalltalk pueden remontarse a 1972, cuando el primer Smalltal k imagen bootstrapped! Las imágenes de Smalltalk nunca mueren, simplemente se desvanecen en algo potencialmente fundamentalmente diferente. Debería ver que la creación de su aplicación no es fundamentalmente diferente de crear una nueva versión de Smalltalk.

0

En pocas palabras, una imagen Smalltalk es una imagen del entorno Smalltalk que se ha guardado en un momento dado. Cuando esta imagen se vuelve a cargar en el sistema de tiempo de ejecución de Smalltalk, todo está como estaba en el momento en que se guardó la imagen.

Las imágenes guardadas por un sistema Smalltalk no pueden, en general, ser cargadas por un sistema Smalltalk diferente.

Creo que el desarrollo basado en imágenes es increíblemente enriquecedor. Si me interrumpen, puedo guardar la imagen, y cuando vuelvo, vuelvo a donde estaba. Los depuradores que estaban abiertos todavía están abiertos, esperando continuar. Hay muy poco "tengo que descubrir cómo volver a donde estaba" - es más "OK, continuemos ...".

Comparte y disfruta.

1

Es la serialización de todo en el sistema completo, incluidos todos los trabajos de desarrollo y todos los datos del usuario. Todo aparte del núcleo del entorno de tiempo de ejecución.

Smalltalk, como Java, se ejecuta en una máquina virtual que ejecuta un bytecode simbólico y contiene elementos de bajo nivel como el recolector de elementos no utilizados. Esto hace que Smalltalk sea muy portátil, y también muy write-once-run-anywhere.

Como era de esperar, esta fue la inspiración para Java. Entonces, Smalltalk VM (StVM) es el equivalente del Java Runtime Environment.

En Smalltalk, todo lo demás se almacena en la memoria RAM. La base de código, que se compila dinámicamente sobre la marcha para StVM. Todos los datos de objeto que ha creado ejecutando sus aplicaciones de usuario final vertical y horizontal. Toda la personalización que ha hecho al entorno de ventanas y su apariencia. Todo el nuevo código que has escrito. Una canción que ha cargado en la máquina virtual para reproducirla en un reproductor de música. Cualquier otro dato, código u objeto que esté utilizando o haya cargado.

Todo está en vivo en la memoria de la PC.

Periódicamente, es posible que desee guardar el estado actual de reproducción en el disco. Cuando lo haga, congelará la VM de Smalltalk momentáneamente y copiará todo en un solo archivo de disco. Ese archivo de disco se llama archivo de imagen y, de forma predeterminada, tendrá un sufijo .image en la mayoría de las distribuciones en PC (ya sea que ejecuten Linux, MacOS, Windows o RiscOS).

Es la forma en que guarda su trabajo en progreso cuando está en un procesador de textos o en una hoja de cálculo en una PC típica. Excepto que este guardado incluye la última versión del código de la hoja de cálculo de la que está hecha la aplicación de la hoja de cálculo.

El sistema Smalltalk tiene otras formas de proteger sus datos. Si desarrolla cualquier software o altera cualquiera de las bases de código en las que está escrito el sistema Smalltalk, registra cada cambio en el disco en tiempo real.

Tiene la opción de escribir código, o cargar una aplicación, que puede guardar su código fuente y sus estructuras de datos asociadas, en repositorios de código fuente distribuidos, o en repositorios en su disco local. O a bases de datos relacionales. O a las bases de datos de objetos o las bases de datos NoSQL recién de moda.

La mayoría de las aplicaciones preescritas hacen una copia de seguridad de los datos en disco (s) o base de datos sobre la marcha.

La imagen es una salvación de todo el sistema Smalltalk, (aparte de la máquina virtual. La máquina virtual es equivalente a la del entorno de ejecución de Java. Todo lo demás se almacena en la imagen.

Escribir un nuevo sistema de archivos para acceder a los discos del sistema operativo subyacente? Eso está en la imagen. (y todos los cambios también han sido registrados automáticamente en el disco por el sistema Smalltalk).

¿Introduce un montón de datos en su base de datos de objetos basados ​​en imágenes Smalltalk? en la imagen.

Quiere hacer un restablecimiento de fábrica a su Smalltalk sys tem? Simplemente regrese a usar el archivo de imagen que recibió cuando instaló Smalltalk por primera vez. ¿Desea guardar la imagen cada hora por hora y luego restaurarla hasta hace 4 horas? Solo cargue el archivo de imagen de hace cuatro horas.

La imagen es una copia de todo que el sistema Smalltalk tiene en la memoria. Excepto por la pequeña, invariable y vital proporción del sistema que es la Máquina Virtual.