sisoputnfrba / foro

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

Consultas sobre las funciones de archivos #3830

Closed MartoSimon closed 5 months ago

MartoSimon commented 5 months ago

Buen día! Empezamos a hacer la parte de la interfaz DialFS y nos surgieron unas cuantas dudas respectos a las funciones f y m.

No entendemos bien como funciona el mapeo a memoria y después su sincronización, es decir, no entendemos como hacer si queremos poner un 1 en la posición 20 por ejemplo dentro del bitmap, sin agrandar el tamaño del mismo. En otras palabras, entendemos como mapear el archivo a memoria, pero no sabemos bien como modificarlo una vez mapeado.

Por otro lado, también preguntar si es necesario/deberíamos usar las funciones f (fwrite, fread, etc) si es que usamos las funciones m (mmap, msync, etc).

Espero que se hayan entendido todas las consultas.

Saludos!

f-and commented 5 months ago

Buenas! Primero, si o si son necesarias las funciones de manejo de archivos (funciones "f y m") para lo que es el DialFS ya que necesitan crear los archivos como el Bitmap y el bloques.dat, además de los archivos de Metadata. Despues, lo de sincronización entre archivo y memoria lo manejan el mmap y msync, que lo que hacen es crear un vínculo entre el archivo a modificar y la variable de memoria (por ejemplo el bitmap manejado por un bitarray, y el bitmap.dat), por lo que cuando se modifique la variable, se debería modificar el archivo (igual un consejo es siempre poner msync al final de cada modificación). Y lo de agrandar el archivo, para esto se recomienda que apenas creen el archivo, por ejemplo en su caso el de bitmap, usen ftruncate para poder preparar el archivo con el tamaño especifico, ya que este tamaño no va a cambiar a menos que se tire abajo la interface y se le cambie los tamaños en la configuración.

MartoSimon commented 5 months ago

Perfecto, muchas gracias!