sisoputnfrba / foro

Foro de consultas para el trabajo práctico
151 stars 7 forks source link

Consulta - FM9 #1236

Closed gpanduro closed 6 years ago

gpanduro commented 6 years ago

buenas tardes, tenemos unas de dudas sobre FM9, si alguno le surgió o nos orienta un poco:

Gracias,

tferraro commented 6 years ago

Buenas!

Vayamos por partes? Porqué líneas de 128 ? A que viene ese número? Por otro lado, los segmentos tienen tamaños diferentes, solo recordá, que la unidad de asignación no es el byte, sino es una línea de tamaño fijo 🙂 El como implementarlo, fijense ustedes, dado a que es una decisión más personal del grupo el como estructurar su metadata. Solo tengan en cuenta que el "storage" siempre va a ser un bloque de tamaño contínuo individible.

Tom

JulianSimpli commented 6 years ago

Buenas. Aprovecho este issue para sacarme una duda sobre: Vayamos por partes? Porqué líneas de 128 ? A que viene ese número? El enunciado habla de que una línea tiene un tamaño dado por archivo de configuracion (por default de ejemplo está el '128'), sabiendo que la unidad que maneja la memoria no es de 'bytes' sino de 'lineas', no me queda claro qué representa ese tamaño máximo ('128' por ej) en una línea. Saludos

tferraro commented 6 years ago

Ok, partamos de ahí! 128 es un número completamente arbitrario, no tiene default.

Lo que pasa es que, cuando uno habla de una unidad de asignación, habla de una unidad discreta de un tamaño conocido, sobre el que uno puede trabajar.

Usar una unidad de asignación en bits (o en bytes="8 bits") es algo representable a un estado de la memoria física que mantiene esa misma dinámica.

El problema que te aparece cuando cambias la unidad, es que necesitás, eventualmente, mappearla a "bit", porque es la unidad que por default, la memoria posta tiene. Ahora, como mappearías una línea cualquiera, de tamaño N, a algo que responda a M bits?. Ahí es donde entra tu tamaño máximo de línea. Es lo que te define el tamaño fijo que siempre va a tener tu unidad de asignación 🙂

La pregunta que sale de ahi es: Si las líneas tienen tamaño variable, como harías para llevarlas a ese tamaño fijo de M bytes (o bits, pero la config usa bytes)?

JulianSimpli commented 6 years ago

Me quedó más claro, gracias. Por último, puede darse el caso de que la línea supera el tamaño máximo de línea? terminaría ocupando dos líneas?

tferraro commented 6 years ago

Podríamos decir que es un comportamiento no tipificado, puede pasar lo que ustedes quieran. Por parte de las pruebas, no va a existir ese escenario, justamente para respetar el nombre tamaño maximo y simplificar el tema 🙂

tferraro commented 6 years ago

@gpanduro se resolvió tu duda? Como venís con eso?

FranciscoII commented 6 years ago

Una duda que me surgio a mi es que segmentacion (segun la teoria) no tiene fragmentacion interna. Pero yo entendi que hay que guardar de a lineas por lo que si el tamaño maximo es 32 y yo guardo una linea de tamaño 5 (Ej, "Hola") estaria perdiendo 27 bytes ahí. Esto lo ignoramos o hay que implementar como dijeron arriba de poner todas las lineas juntas e ir separando por un '/n' Eso lo solucionaria aunque en si no se si conceptualmente es lo que buscan

tferraro commented 6 years ago

@FranciscoII en la memoria si vas a tener fragmentación interna, justamente por como está diseñada. No es un problema que queramos atacar, porque ganamos simplicidad. Ahora, lo que si no vas a tener es fragmentación interna en el MDJ, que sería la implementación que indicás.

tferraro commented 6 years ago

Cierro el issue por inactividad. Cualquier cosa lo reabrimos o generamos otro issue 😉 .