Почти уже сваял FAT16 для SD-карт под ARM7 и встал вот какой вопрос: как правильно выделять кластеры под файл, открытый на запись. Самое простое (пока так и сделал) это брать первый свободный кластер, но в случае, если свободное пространство сильно фрагментировано, то и файл получится фрагментированным. Опять же дополнительные временные затраты на чтение из разных секторов FAT. А можно писать файл, начиная с некоторой непрерывной свободной области. Но тут возникает вопрос, а какую область считать непрерывной? Ту, на которой до самого конца диска нет ни одного занятого кластера или область размером не менее какой-то величины? Тогда – какой величины? Ведь размер файла заранее не известен. У кого какие мысли по этому поводу и кто как делал? Кстати, сам стандарт FAT16 это дело как-то оговаривает или отдает на откуп верхним уровням
|