Ahora entiendo tu punto.

Respecto a la solucion que nosotros le dimos en Sqnos, acoto simplemente que
creo que se podria llegar a una prueba formal del correcto funcionamiento ya
que el procesador te asegura que siempre que intentes modificar el objeto
mientras se esta ejecutando este no lo va a permitir. Aqui hay un hibrido
interesante entre imagen y la herramienta que te asegura la correctitud.
Igual despues habria que ver que pasa con los buffers donde haces el copy
antes de volver a dejar la pagina como escribible y puede que aca si
aparescan cuestiones como las que mencionas y una demostracion formal sea
mas compleja...

Ya que nombraste Newspeak como posible solucion a alguno de los
problemas...NewspeakNos no? jeje

Saludos,
Guido.

El 24 de junio de 2011 19:45, Andres Valloud <[email protected]>escribió:

> > Esta fue la idea que surgió charlando con gente en la ultima Smalltalks y
> a
> > partir de haber conocido un poco mas sobre garbage collector general y
> sobre
> > el gc de la vm de squeak particularmente. Sin embargo, al hacer la prueba
> y
> > poner toda la imagen en readonly menos el "eden" vimos que se generaban
> > pagefaults. Esto nos dio la pauta que habia cosas en la parte freezada
> que
> > se estaban modificando y podian generar inconsistencias. Metiendonos un
> > poquito mas adentro vimos varios casos que hacen que se modifiquen
> objetos
> > en el medio del proceso de grabado. En este momento me acuerdo por
> ejemplo
> > del gc
>
> Y si, mientras se graba la imagen no podria haber GC, asi que habria
> que tener mucho cuidado con la manera en que estuviera escrito.
> Ademas, tampoco se podrian crear referencias a objetos nuevos desde
> objetos viejos porque entonces habria que cambiar el RT.  Debe haber
> mas de estas.
>
> > semaforos internos que generan cambio de contexto en la imagen, etc.
>
> Ahh, esto es molesto.  Por ejemplo, esta el semaforo de los delays.
> En VW existe la manera de registrar objetos con la VM.  Si quisiera
> seguir este camino, entonces habria que hacer mas laburo.
> Basicamente, la imagen tendria que tener modos de ejecucion diferentes
> donde por ejemplo se pueda decir cosas como "durante este tiempo no
> hay delays".  Esto en VW no seria imposible (ojo que ni ahi estoy
> diciendo que sea "facil") ya que esta modelado el tema de los
> subsistemas.  Entonces, al grabar la imagen, tendrias que cambiar el
> modo de ejecucion, grabar, y despues volver al modo "developer".
>
> > Con lo cual este camino resulto insatisfactorio, porque era muy
> complicado
> > llegar a probar que estos cambios no iban a generar una imagen con
> > propiedades distintas a la requerida.
>
> Y si, este es un problema porque como sabes el codigo que esta en la
> imagen y que es lo que esta haciendo?  Por ejemplo, se puede grabar la
> imagen mientras el MessageTally esta midiendo al proceso que graba la
> imagen?  A esta clase de cosas iba con lo que dije despues...
>
> > En esta parte no te logro seguir del todo. Nuestro desarrollo y los
> > problemas que surgieron no tuvieron una relacion tan directa con la
> > metacircularidad. Si, intentamos llevar lo mas posible del lado de la
> imagen
> > pero los resultados nos parecen bastante buenos. Por ejemplo, el tener
> > modelado un administrador de memoria en alto nivel, nos permitio utilizar
> la
> > paginacion para implementar copy on write de manera directa y haciendo un
> > uso intensivo de las herramientas que provee el procesador. Sin embargo
> el
> > modelo esta casi completamente hecho en smalltalk.
>
> Quiza funciona hoy, pero mañana?  Se puede demostrar que este
> mecanismo funciona en presencia de codigo y objetos arbitrarios en la
> imagen?  Y si no se puede, entonces no conviene que el mecanismo no
> este en *la misma imagen*?  En general eso se pone en la VM, pero
> tambien podria estar en otra imagen (como dice Guillermo con lo del
> modo "hypervisor", aunque habria que pensarlo mas --- por ejemplo
> habria que ir tipo a 1996 y ver que querian hacer los de Digitalk con
> Firewall --- y desde ya ni siquiera se puede hablar de que esto es un
> problema simplemente "dificil").
>
> Aca hay un par de problemas mas modestos.  El primero es que hay que
> cambiar identityHash.  Eso quiere decir que por ejemplo cambia el
> lookup de namespaces mientras la imagen sigue corriendo.  Como se hace
> la cirugia de cerebro para que no se rompa todo?  Y como se demuestra
> que es correcto en presencia de codigo y objetos arbitrarios?
>
> El segundo es que hay que cambiar el printString de numeros de punto
> flotante.  En particular, hay que cambiar la cantidad de cifras, y las
> cifras mismas.  Fijate lo que pasa si haces algo como esto:
>
> Double pi = (Double readFrom: Double pi printString readStream)
>
> Da false (!!!).  Pero, sin embargo,
>
> Double pi printString = (Double readFrom: Double pi printString
> readStream) printString
>
> es true (!!!).
>
> Cuantas veces nosotros como programadores hicimos copy paste de un
> workspace y metimos codigo en el browser con numeros de punto
> flotante?  Bueno, todo eso esta probablemente mal.  Y tambien es
> probable que esten mal todos los archivos con numeros de punto
> flotante escritos con printString (pero en VW el NumberPrintPolicy
> tambien esta mal para punto flotante por razones diferentes, y
> entonces te puede pasar que 1234.5 se imprima como 1234.499993).
>
> Pero bueno, mal que mal, los programas y los tests pasan.  Que pasa si
> arreglo los numeros de punto flotante?  Cuanto se rompen las cosas,
> mas alla de que el cambio sea necesario?  Es aceptable tener que
> volver a recompilar ***todo*** el codigo que esta publicado en
> binario?  Y como hacen los usuarios para cargar el codigo nuevo (o el
> viejo) si, entre otras cosas, voy a cambiar como se interpretan los
> literals en el codigo?
>
> Bueno, todos estos problemas no existirian si la imagen no se
> estuviera ejecutando mientras se carga el codigo.  O si tuvieramos
> divisiones al estilo Newspeak.  Pero... aqui estamos... la esencia del
> problema es que un ente no se puede observar a si mismo excepto
> dividiendose en la parte que observa y la parte observada.  Meter todo
> en la imagen hace dificil (y en algunos casos sospecho que imposible)
> que el sistema reflexione acerca de si mismo, simplemente porque no se
> puede observar a si mismo con claridad.
>
> Andres.
>
> --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
>
> http://www.clubSmalltalk.org
>

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a