Файловые системы

Прежде чем делать файловую систему, стоит решить, нужна ли она вообще, и если нужна, то какая. Можно рассмотреть насколько аспектов:

  • тип и сложность хранимых данных;
  • совместимость с другими системами.

Второй пункт относительно прост. Если хранилищем данных непосредственно будет пользоваться только сама машинка, то наш выбор ничем не ограничивается, в противном случае надо только то, с чем могут работать другие. Один из распространённых вариантов — машинка использует широко распространённый формат флэш-накопителей, который можно подсоединить к ПК. К ним относятся USB-флэшки, карточки CompatFlash, SD/MMC, Memory Stick и т. п. В таком случае выбор невелик — придётся использовать стандарт де-факто: FAT. Другой вариант — машинка подключается непосредственно к ПК как стандартное накопительное устройство, имитируя из себя всё те же USB-флэш, CompactFlash и т. п. Выбор в таком случае тот же — FAT. Несмотря на то, что теоретически возможно использовать NTFS, расчитывать на это не стоит — это весьма сложная файловая система, полная загадок и неясностей, и чтобы работать с ней надо уже брать „взрослую“ ОС. Впрочем, можно также попробовать реализовать поддержку Ext2/3 или UFS или какую-нибудь другую, но в этом случае доступность ограничится Linux/ BSD, и теми, кому под силу установить соответствующие драйвера в компьютер.

Если же наше устройство общается с внешним миром через сетевой протокол или вовсе использует свою личную программу на ПК для обмена данными, то выбор становится не принципиальным — сетевые протоклы не зависят от типа ФС, так как оперируют исключительно на уровне файлов, а самописный драйвер — на совести программиста. Сразу скажу, что я не системный программист Windows или Linux, поэтому рассказывать, как это делается, не буду. Хотя данный подход довольно широко применятся, так что скорее всего я ещё упомяну о нём.

Если с совместимостью всё ясно и выбор есть, то стоит оценить потребность в ФС и ресурсы. Можно выделить примерно следующие уровни потребностей:

Небольшой фиксированный набор данных (системные установки, настройки, состояние)
В этом случае файловая система в общем-то не требуется, достаточно статически распределить доступную энергонезависимую память между хранимыми данными, например, используя структуры. Это требует минимум программного кода и ресурсов.
Динамически изменяющиеся в определёном порядке однородные данные (накопление показаний датчиков, журнал событий)
Часто достаточно простейших динамических структур, например, таблиц, списков. Реализовать это, как правило, требует немного усилий.
Более сложные варианты
В остальных случаях обычно наилучшим решением бывает изпользование настоящей файловой системы, а в экзотических вариантах стоит посмотреть на базы данных.

Существенным фактором в выборе способа хранения данных является также отказоустойчивость. Если возможные сбои некритичны, то часто самый простой выбор выглядит вполне оптимальным, однако если к надёжности требования высоки, следует особенно внимательно присмотреться к вариантам отказоустойчивых систем.

cifra/embedded/fajlovye_sistemy.txt · Последние изменения: 2010/02/05 17:53 — vovanium
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 3.0 Unported