реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> FAT16, Порядок выделение свободных кластеров
b-volkov
сообщение Mar 18 2008, 14:09
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Почти уже сваял FAT16 для SD-карт под ARM7 и встал вот какой вопрос: как правильно выделять кластеры под файл, открытый на запись. Самое простое (пока так и сделал) это брать первый свободный кластер, но в случае, если свободное пространство сильно фрагментировано, то и файл получится фрагментированным. Опять же дополнительные временные затраты на чтение из разных секторов FAT. А можно писать файл, начиная с некоторой непрерывной свободной области. Но тут возникает вопрос, а какую область считать непрерывной? Ту, на которой до самого конца диска нет ни одного занятого кластера или область размером не менее какой-то величины? Тогда – какой величины? Ведь размер файла заранее не известен. У кого какие мысли по этому поводу и кто как делал? Кстати, сам стандарт FAT16 это дело как-то оговаривает или отдает на откуп верхним уровням
Go to the top of the page
 
+Quote Post
Nixon
сообщение Mar 18 2008, 15:05
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Как-то слабо вериться в дополнительные временные затраты из-за фрагментации FAT на SD. Откуда им там взяться?


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 18 2008, 15:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Nixon @ Mar 18 2008, 18:05) *
Как-то слабо вериться в дополнительные временные затраты из-за фрагментации FAT на SD. Откуда им там взяться?

На дополнительных обращениях к FAT.
Я лично не стал заморачиваться: свободный кластер ищется в текущем кэшированном секторе FAT, если его нет - берется следующий сектор. Впрочем, у меня и фрагментации особо взяться неоткуда.
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Mar 19 2008, 09:09
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Если кластеры расположены в разных секторах ФАТ, то для записи каждого кластера надо один раз прочитать соответствующий сектор ФАТ и один раз записать (если, конечно, у Вас нет столько памяти, что бы всю ФАТ кешировать). Если кластер не большой, допустим 16 секторов, то получается на 8 % больше обращений к карте.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 19 2008, 09:21
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(b-volkov @ Mar 19 2008, 12:09) *
Если кластеры расположены в разных секторах ФАТ, то для записи каждого кластера надо один раз прочитать соответствующий сектор ФАТ и один раз записать

Два раза записать - есть еще копия FAT. Но это уж самый крайний случай, когда в каждом секторе FAT по одному свободному кластеру.
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Mar 19 2008, 12:24
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Я пока вторую копию не правлю. А, вообще говоря, очень оно надо? Винда и так проглатывает, а если ФАТ слетит, то все равно востанавливать я его не буду не буду, просто форматну.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 19 2008, 12:56
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(b-volkov @ Mar 19 2008, 15:24) *
Я пока вторую копию не правлю. А, вообще говоря, очень оно надо? Винда и так проглатывает, а если ФАТ слетит, то все равно востанавливать я его не буду не буду, просто форматну.

Если делать все честно, то надо. У меня даже вопроса такого не возникало.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 03:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.07078 секунд с 7
ELECTRONIX ©2004-2016