b-volkov 0 18 марта, 2008 Опубликовано 18 марта, 2008 · Жалоба Почти уже сваял FAT16 для SD-карт под ARM7 и встал вот какой вопрос: как правильно выделять кластеры под файл, открытый на запись. Самое простое (пока так и сделал) это брать первый свободный кластер, но в случае, если свободное пространство сильно фрагментировано, то и файл получится фрагментированным. Опять же дополнительные временные затраты на чтение из разных секторов FAT. А можно писать файл, начиная с некоторой непрерывной свободной области. Но тут возникает вопрос, а какую область считать непрерывной? Ту, на которой до самого конца диска нет ни одного занятого кластера или область размером не менее какой-то величины? Тогда – какой величины? Ведь размер файла заранее не известен. У кого какие мысли по этому поводу и кто как делал? Кстати, сам стандарт FAT16 это дело как-то оговаривает или отдает на откуп верхним уровням Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nixon 4 18 марта, 2008 Опубликовано 18 марта, 2008 · Жалоба Как-то слабо вериться в дополнительные временные затраты из-за фрагментации FAT на SD. Откуда им там взяться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 марта, 2008 Опубликовано 18 марта, 2008 · Жалоба Как-то слабо вериться в дополнительные временные затраты из-за фрагментации FAT на SD. Откуда им там взяться? На дополнительных обращениях к FAT. Я лично не стал заморачиваться: свободный кластер ищется в текущем кэшированном секторе FAT, если его нет - берется следующий сектор. Впрочем, у меня и фрагментации особо взяться неоткуда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
b-volkov 0 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Если кластеры расположены в разных секторах ФАТ, то для записи каждого кластера надо один раз прочитать соответствующий сектор ФАТ и один раз записать (если, конечно, у Вас нет столько памяти, что бы всю ФАТ кешировать). Если кластер не большой, допустим 16 секторов, то получается на 8 % больше обращений к карте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Если кластеры расположены в разных секторах ФАТ, то для записи каждого кластера надо один раз прочитать соответствующий сектор ФАТ и один раз записать Два раза записать - есть еще копия FAT. Но это уж самый крайний случай, когда в каждом секторе FAT по одному свободному кластеру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
b-volkov 0 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Я пока вторую копию не правлю. А, вообще говоря, очень оно надо? Винда и так проглатывает, а если ФАТ слетит, то все равно востанавливать я его не буду не буду, просто форматну. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Я пока вторую копию не правлю. А, вообще говоря, очень оно надо? Винда и так проглатывает, а если ФАТ слетит, то все равно востанавливать я его не буду не буду, просто форматну. Если делать все честно, то надо. У меня даже вопроса такого не возникало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться