Closed FedericoJoel closed 6 years ago
Ahora, pensandolo, (yo programe el algoritmo circular reemplazando atomicas o no atomicas) y lo estoy cambiando. Y digo, si yo tengo un puntero que apunta a la posicion 3 de mi memoria donde habia una entrada con la clave "hola" que era atomica, se realiza un SET, se escribe en hola una entrada que no es mas atomica, entonces se reubica. y mi puntero quedo apuntando a la 3 posicion q capaz esta vacia o se le asigna una no atomica... de que me disfrazo?
tengo que ir checkeando si es o no atomica cada vez q voy a reemplazar y sino seguir buscando?
Hola @FedericoJoel, ya se respondieron las consultas 1 y 3 en otros issues.
1- sólo entradas atómicas. no se va a dar el caso de tener puras entradas no atómicas, y si llega a pasar, hay que devolver error al coordinador avisando que no se puedo hacer el set.
3- sólo entradas atómicas. el gráfico está mal, porque no se actualizó cuando se actualizó el enunciado.
2- cada set o store que llega a la instancia referencia a una clave. en esos casos actualizás el dato de "última vez usado" para la clave correspondiente, en la tabla de entradas. en el anunciado dice que en lugar de tener una fecha y hora, conviene llegar un contador global de acciones ejecutadas. con eso sabés que la entrada más antigua es la que tenga el valor más bajo. nosotros lo estamos haciendo así porque simplifica mucho, sino con fecha y hora te volvés loco.
si solo reemplazo atomicas, se puede dar igual fragmentacion externa? dudoso no?
Revisa el grafico de compactacion, el caso en el que se da es exactamente cuando reemplazas una entrada no atomica con un valor mas chico entonces queda una entrada libre en el medio.
El 27 de junio de 2018, 12:22, Lea MM notifications@github.com escribió:
Hola @FedericoJoel https://github.com/FedericoJoel, ya se respondieron las consultas 1 y 3 en otros issues.
1- sólo entradas atómicas. no se va a dar el caso de tener puras entradas no atómicas, y si llega a pasar, hay que devolver error al coordinador avisando que no se puedo hacer el set.
3- sólo entradas atómicas. el gráfico está mal, porque no se actualizó cuando se actualizó el enunciado.
2- cada set o store que llega a la instancia referencia a una clave. en esos casos actualizás el dato de "última vez usado" para la clave correspondiente, en la tabla de entradas. en el anunciado dice que en lugar de tener una fecha y hora, conviene llegar un contador global de acciones ejecutadas. con eso sabés que la entrada más antigua es la que tenga el valor más bajo.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sisoputnfrba/foro/issues/1171#issuecomment-400713937, or mute the thread https://github.com/notifications/unsubscribe-auth/ALSplFg3qr4asNoQz7bOUqk2hyo08x_Fks5uA6NFgaJpZM4U54ax .
Es una lastima que esten estos errores por que perse el tp ya es largo y uno se basa en lo que va viendo y termina codeando por demas sin necesidad.
El 27 de junio de 2018, 12:36, Federico Hombre fechhe@gmail.com escribió:
si solo reemplazo atomicas, se puede dar igual fragmentacion interna? dudoso no?
Revisa el grafico de compactacion, el caso en el que se da es exactamente cuando reemplazas una entrada no atomica con un valor mas chico entonces queda una entrada libre en el medio.
El 27 de junio de 2018, 12:22, Lea MM notifications@github.com escribió:
Hola @FedericoJoel https://github.com/FedericoJoel, ya se respondieron las consultas 1 y 3 en otros issues.
1- sólo entradas atómicas. no se va a dar el caso de tener puras entradas no atómicas, y si llega a pasar, hay que devolver error al coordinador avisando que no se puedo hacer el set.
3- sólo entradas atómicas. el gráfico está mal, porque no se actualizó cuando se actualizó el enunciado.
2- cada set o store que llega a la instancia referencia a una clave. en esos casos actualizás el dato de "última vez usado" para la clave correspondiente, en la tabla de entradas. en el anunciado dice que en lugar de tener una fecha y hora, conviene llegar un contador global de acciones ejecutadas. con eso sabés que la entrada más antigua es la que tenga el valor más bajo.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sisoputnfrba/foro/issues/1171#issuecomment-400713937, or mute the thread https://github.com/notifications/unsubscribe-auth/ALSplFg3qr4asNoQz7bOUqk2hyo08x_Fks5uA6NFgaJpZM4U54ax .
El tema de la fragmentación externa también es raro, y también lo hablamos en otros issues.
Se puede dar cuando: Tenés una entrada no atómica, y luego se hace otro SET sobre esa misma clave con un valor que ocupa menos espacio, convirtiéndose en entrada atómica. Ahí te queda un espacio liberado. ¿Se entiende? Ponele que el valor original ocupe 3 entradas, y luego el nuevo valor ocupa solo 1, te quedan 2 entradas libres.
Mmm cada vez q me sobre escriben una entrada, si el espacio no es el mismo yo reubicó mi entrada.
Enviado desde mi iPhone
El 27 jun. 2018, a la(s) 13:01, Lea MM notifications@github.com escribió:
El tema de la fragmentación externa también es raro, y también lo hablamos en otros issues.
Se puede dar cuando: Tenés una entrada no atómica, y luego se hace otro SET sobre esa misma clave con un valor que ocupa menos espacio, convirtiéndose en entrada atómica. Ahí te queda un espacio liberado. ¿Se entiende? Ponele que el valor original ocupe 3 entradas, y luego el nuevo valor ocupa solo 1, te quedan 2 entradas libres.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
Buenas buenas!
Sumado a lo que dice @LeaTex no hace falta reducir una no atomica a atomica, bien podria ser un caso donde una entrada va a pasar a ocupar de 4 a 2 entradas :)
@FedericoJoel Ojo que lo del reemplazo de atomicas estuvo desde la primer versión del enunciado, solo se fueron aclarando las situaciones como la de que una entrada no atomica puede llegar a pasar a atomica con un SET.
Saludos.-
Dami, fijate los gráficos explicativos del tp a ver que entendes vos.
Enviado desde mi iPhone
El 27 jun. 2018, a la(s) 14:37, Damian Facchini notifications@github.com escribió:
Buenas buenas!
Sumado a lo que dice @LeaTex no hace falta reducir una no atomica a atomica, bien podria ser un caso donde una entrada va a pasar a ocupar de 4 a 2 entradas :)
@FedericoJoel Ojo que lo del reemplazo de atomicas estuvo desde la primer versión del enunciado, solo se fueron aclarando las situaciones como la de que una entrada no atomica puede llegar a pasar a atomica con un SET.
Saludos.-
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
Fede, en el caso del gráfico de la compactación tenes razon, no es lo más feliz porque justamente reemplaza una que no es atómica, pero ante la duda, no era más fácil consultarnos acerca de qué era lo que importaba?
Bueno, si la reubicás igual estarías dejando libre el espacio que ocupaba inicialmente, por lo que ahí tenés fragmentación.
Te diría que tengan cuidado con eso, porque si tenés todas las entradas ocupadas, ¿a dónde la reubicás?
Si el nuevo valor es mayor y no tenés espacio, aplicás el algoritmo de reemplazo. Pero te planteo este caso: Clave A ocupa 2 entradas. Tenés todas las entradas llenas. Te llega un nuevo SET sobre A y ahora debe ocupar 3 entradas, o sea solo 1 extra. Aplicás algoritmo de reemplazo para liberar una entrada atómica, y ahí ganás la entrada libre que te falta, pero posiblemente tengas que compactar o hacer alguna otra magia, porque esa entrada liberada no va a ser necesariamente contigua a las otras 2 que ya tiene ocupadas.
Si el nuevo valor es menor, y ya tenés todas las entradas ocupadas, ¿a dónde lo reubicás? De hecho no sería necesario reubicar nada.
Así que cuidado porque no siempre van a tener lugar para reubicar, y no siempre va a ser necesario reemplazar.
Yo también había pensado inicialmente en reubicarla, porque básicamente sería tratarla como una entrada nueva, pero después empecé a toparme con estos casos borde, y creo que me la compliqué más. Jeje.
Mmm cada vez q me sobre escriben una entrada, si el espacio no es el mismo yo reubicó mi entrada.
Siempre antes de reubicar, guardo en una variable temporal la borro de mis estructuras a esa clave y ahi le busco espacio libre
Enviado desde mi iPhone
El 27 jun. 2018, a la(s) 14:48, Lea MM notifications@github.com escribió:
Bueno, si la reubicás igual estarías dejando libre el espacio que ocupaba inicialmente, por lo que ahí tenés fragmentación.
Te diría que tengan cuidado con eso, porque si tenés todas las entradas ocupadas, ¿a dónde la reubicás?
Si el nuevo valor es mayor y no tenés espacio, aplicás el algoritmo de reemplazo. Pero te planteo este caso: Clave A ocupa 2 entradas. Tenés todas las entradas llenas. Te llega un nuevo SET sobre A y ahora debe ocupar 3 entradas, o sea solo 1 extra. Aplicás algoritmo de reemplazo para liberar una entrada atómica, y ahí ganás la entrada libre que te falta, pero posiblemente tengas que compactar o hacer alguna otra magia, porque esa entrada liberada no va a ser necesariamente contigua a las otras 2 que ya tiene ocupadas.
Si el nuevo valor es menor, y ya tenés todas las entradas ocupadas, ¿a dónde lo reubicás? De hecho no sería necesario reubicar nada.
Así que cuidado porque no siempre van a tener lugar para reubicar, y no siempre va a ser necesario reemplazar.
Yo también había pensado inicialmente en reubicarla, porque básicamente sería tratarla como una entrada nueva, pero después empecé a toparme con estos casos borde, y creo que me la compliqué más. Jeje.
Mmm cada vez q me sobre escriben una entrada, si el espacio no es el mismo yo reubicó mi entrada.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
Si, es un poco relativo dani lo que me estás diciendo. Yo considero que se podría ser consistente con los requerimientos funcionales, o si se dejan a interpretación algunas cosas, aceptar cierto margen de diferencia en las implementaciones de los tp. El tp ya perse es largo como te decía antes, cuando nos ponemos a desarrollar si tenemos que hacer de analistas funcionales es un trabajo extra que consume tiempo y nos hace realizar correcciones.
Enviado desde mi iPhone
El 27 jun. 2018, a la(s) 14:46, Damian Facchini notifications@github.com escribió:
Fede, en el caso del gráfico de la compactación tenes razon, no es lo más feliz porque justamente reemplaza una que no es atómica, pero ante la duda, no era más fácil consultarnos acerca de qué era lo que importaba?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
Fede, entiendo tu punto, y no te niego que el gráfico esta mal, ya que los reemplazos son de entradas atómicas y fue algo que discutimos es una gran cantidad de issues, justamente por el hecho de que si hacíamos que los reemplazos no fueran atómicos podían darse casos mucho mas complicados.
De todas formas, como consejo mas allá de la facultad, siempre que veas que algo no concuerda (texto vs ejemplos gráficos) plantealo, porque hoy es un tema de una prueba de un TP que eventualmente puedo llegar a ver como suplirla, el día de mañana es la especificación de un servicio core y sabela que siempre es culpa de dev porque el funcional se va a lavar las manos, entonces asegurate de exponer la inconsistencia lo antes posible.
Saludos.-
Hola, para representar las entradas no-atómicas se está usando esta "nomenclatura":
Notese la separación entre entradas.
Los otros ejemplos no tienen separación de entradas, porque buscan modelar una clave más grande. Como todo modelo, simplificamos algunos aspectos de la realidad en pos de mostrar otros. Reconocemos que, algo que para muchos de nosotros quedó claro, para otros puede no ser obvio pese a que el texto que lo acompaña lo aclare, y de ahí que contestemos en este y otros tickets, y les pedimos las disculpas pertinentes.
Por último, la idea de este espacio es responder consultas, pero si hubiese alguna queja o cuestión para resolver que exceda este ámbito (enunciado, métodos de evaluación, alcance del trabajo a presentar, roles que debe y no debe tomar cada alumno, etc), los invito a escribirme por privado.
Saludos!
@FedericoJoel Alguna duda pendiente o podemos cerrar el issue por inactividad?
Cerrado, gracias
El 4 de julio de 2018, 11:50, Damian Facchini notifications@github.com escribió:
@FedericoJoel https://github.com/FedericoJoel Alguna duda pendiente o podemos cerrar el issue por inactividad?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sisoputnfrba/foro/issues/1171#issuecomment-402500823, or mute the thread https://github.com/notifications/unsubscribe-auth/ALSplBYClz8sskUwqJTKhNo8GJTaHIhwks5uDNZBgaJpZM4U54ax .
Como estan? Tengo varias consultirijillas.
Arranquemos con lo facil 1) Segun el tp solo se reemplazan entradas atomicas. Por otro lado dice "nuestro tp SIEMPRE permitira un nuevo almacenamiento"... la pregunta se hace obvia, que pasa si tengo todas NO atomicas y quiero meter un nuevo SET? caso de uso que no va a suceder?
2) Algoritmo LRU, que llamamos que el bloque es referenciado? Los get a mi jamas me llegan a la instancia por como lo armamos, osea que referenciarme seria un set o un store?
3) BSU, en el tp dice "solo se realiza reemplazo sobre entradas atomicas" Si miran el enunciado, en el algoritmo BSU me marca el puntero como que a reemplazar seria una entrada NO atomica. En que quedamos con esto?
Gracias, Abrazo.