Estoy intentando escribir un pequeño sistema de archivos en dispositivos flash. Hay algunos problemas para entender cómo funciona el mecanismo de nivelación de desgaste. Aquí hay un ejemplo de cómo lo hace la nivelación de desgaste:
Hay un archivo, llamado file.txt
, y su contenido se encuentra en algunos bloques discontinuos (bloque A, bloque B y bloque C). Debe haber algunos punteros en cada bloque para indicar dónde está el siguiente bloque.
Entonces, cuando se cambió file.txt
, como el contenido en el bloque B, debemos borrar el bloque B y escribir su nuevo contenido en el bloque B. Pero si queremos desgastar los bloques, entonces tal vez elegimos un nuevo bloque D para guardar el nuevo contenido del bloque B, pero si lo hacemos, el puntero del bloque A debe actualizarse para que apunte al nuevo bloque D. Entonces,
- Cada vez que el bloque B está nivelado, necesitamos actualizar el bloque A también, ¿verdad?
- ¿Cómo evitar actualizar el bloque A cada vez que se cambia el contenido del bloque B? O tal vez hay algunos mecanismos que no necesitan actualizar el bloque A?
- ¿Puede alguien decirme más detalles sobre la nivelación del desgaste?