sisoputnfrba / foro

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

Guardar datos en el FS #768

Closed CarolinaPonceRodriguez closed 7 years ago

CarolinaPonceRodriguez commented 7 years ago

Si bien ya hicieron preguntas parecidas, vengo con la siguiente, ya que no se si se puede llegar a solicitar o no. Si tengo un archivo que tiene 3 bloques asignados de 10 bytes cada uno y me piden escribir 5 bytes a partir del byte 31, esto implicaria sin lugar a duda, agregar un bloque mas, por lo cual pasaria a tener 4 bloques. Seria posible que se solicite un offset mucho mayor y deba asignar bloques con "basura"? Pienso en la posibilidad de que (usando el mismo ejemplo) se me pida escribir desde el byte 55 lo que implicaria:

Todo esto porque al asignar bloques incrementaria mi tamanio de archivo por cada uno y el offset debe estar "contenido" dentro de ese tamanio para ser valido.

Espero haber sido clara! Saludos!!

nicozar95 commented 7 years ago

Charlandolo con el resto de los ayudante, este tema no se va a evaluar.

CarolinaPonceRodriguez commented 7 years ago

Claro, entiendo que el bloque con basura, va a sumar en el total del tamanio del archivo. Ahora tengo otra consulta, pero creo que aplica por igual. Cuando creo un archivo nuevo y tengo que asignarle por defecto un bloque, al tamanio del archivo se le va a asignar el tamanio del bloque verdad? Mi archivo nuevo quedaria asi: TAMANIO= tamanio_bloque BLOQUES=[bloque]

A fin de cuentas seria como hacer un touch del archivo y luego un truncate con el tamanio de bloque. Saludos!.

nicozar95 commented 7 years ago

No, ni bien creas un archivo le vas a asignar un bloque pero su tamaño es 0. ¿Por que? Cuando vayas escribiendo va a ir aumentando el tamaño del archivo y pueden que te queden bytes basuras en el archivo y esos no los queres levantar. ejemplo con bloques de 10 bytes:

TAMANIO=25 BLOQUES=[0,5,6]

Del ultimo bloque vos vas a considerar los 5 primeros bytes, no me interesa los otros bytes que tenga el bloque 6

Cuando vos creas un archivo nuevo y no escribiste nada quedaria el archivo de configuracion de la siguiente manera:

TAMANIO=0 BLOQUES=[20]

20 seria el bloque que le asigne. Si seguimos con el ejemplo de que los bloques pesan 10 bytes, si yo voy a la carpeta de /Bloques y me fijo en el tamaño de 20.bin (algo como click derecho + propiedades) me va a decir que el archivo 20.bin pesa 10 bytes, porque ese es el tamaño de mis bloques.

¿Se entiende masomenos? Cualquier cosa avisanos

ghost commented 7 years ago

Una duda que me surgió leyendo este issue, la asignación de bytes en los bloques no es continua? (así lo había pensado) porque sino como sabemos el offset de cada bloque donde hay que empezar a leer ?Hay algun byte de corte o algo por el estilo?

Saludos

nicozar95 commented 7 years ago

Es continua la asignacion, tenes el cursor por cada uno de los archivos que abris x proceso, este arranca en 0 y lo moves por donde vos quieras. Si yo te digo escribime desde el offset 0, 10 bytes. Esos 10 bytes estan uno al lado del otro en el bloque correspondiente (suponiendo que entran todos esos bytes en ese bloque). En caso de que no te entre en un bloque, vos vas a pedir otro y te van a quedar bytes al final de un bloque y bytes al principio. Ojo con eso, cuando vos escribis o lees un archivo no tenes que mover el cursor del mismo

nicozar95 commented 7 years ago

Igual a mi me parece un caso muy raro de que hagamos que el cursor se mueva a una pocision fuera del tamaño del archivo. Ahora les confirmo si este caso se va a evaluar. Para mi no tiene sentido.

nicozar95 commented 7 years ago

@CarolinaPonceRodriguez @picollomartin Charlandolo con el resto de los ayudantes, no vamos a evaluar que el puntero este fuera del archivo correspondiente

CarolinaPonceRodriguez commented 7 years ago

Entendido! Cierro el issue. Gracias!!!