дипломная работа 




Скачать 134.05 Kb.
PDF просмотр
Название  дипломная работа 
страница9/9
Дата конвертации05.10.2012
Размер134.05 Kb.
ТипДиплом
1   2   3   4   5   6   7   8   9


Элементы структуры: 
●  name   
- имя драйвера файловой системы; 
●  file_op  
-  указатель  на  структуру,  описывающую  операции,  которые 
могут быть произведены с файлом; 
●  fsop   
-  указатель  на  структуру,  описывающую  операции,  которые 
могут быть  произведены с файловой системой. 
 
 
Рис. 4.1. Пример  организации  файловой  системы   
 
Для того чтобы добавить поддержку нового драйвера файловой системы, 
необходимо 
реализовать 
все 
необходимые 
функции, 
после 
чего 
зарегистрировать драйвер в виртуальной файловой системе с помощью макроса 
DECLARE_FILE_SYSTEM_DRIVER,  который  добавит  описание  драйвера  в 
специальную  секцию.  Таким  образом,  мы  статически  можем  задать  все 
необходимые параметры драйвера файловой системы. 
4.4 Подключаемые драйвера файловых систем 
В момент создания узла виртуальной файловой системы в описывающую 
его  структуру  вносится  информация  о  том,  драйвер  какой файловой системы 
используется  для  операций  с этим узлом.  В файловой системе проекта Embox 
26 
 

реализованы  два  драйвера  файловых  систем:  flashfs  и  ramfs.  Каждый  из  них 
реализует  необходимые  функции  интерфейса  виртуальной  файловой  системы 
vfs. 
4.4.1 Особенности реализации flashfs 
Вся информация о файловой системе расположена в нескольких таблицах, 
хранимых в зарезервированных областях flash-памяти. 
Таблица файлов 
 
Таблица файлов располагается в первых двух ячейках flash-памяти. Одна 
из  ячеек  в  каждый  момент  времени  зарезервирована  и  не  содержит  полезной 
информации,  другая  –  рабочая.  Рабочая  ячейка  организована  по  принципу 
микролога, она постепенно заполняется элементами следующей структуры: 
typedef struct _file_entry { 
 
uint32_t 
            file_id; 
 
uint32_t    
 
start_ block; 
 
uint32_t 
 
parent_id; 
} file_entry_t; 
 
Каждый  элемент  при  этом  описывает  соответствие  между  идентификатором 
файла и логическим номером ячейки flash-памяти (стартовой ячейки для файла), 
в  которой  содержится  информация  об  этом  файле.  Кроме  того  в  структуре 
содержится ссылка на идентификатор родительского файла.  В рабочей ячейке 
может быть одновременно несколько структур, описывающих файл с одним и 
тем же идентификатором, корректной считается структура, находящаяся дальше 
всех  от  начала  ячейки,  остальные  считаются  устаревшими.  При  добавлении 
нового файла или изменении стартовой ячейки текущего файла информация об 
этом  дописывается в конец микролога до тех пор, пока микролог не заполнит 
всю  рабочую  ячейку.  В  этот  момент  происходит  копирование  всех 
27 
 

неустаревших  записей  из  рабочей  ячейки  в  зарезервированную  и  очищение 
рабочей ячейки. После этого ячейки меняются ролями. 
 
Использование  такой  таблицы  накладывает  ограничение  на  число 
возможных  файлов  в  системе.  Исходя  из  размера  ячейки  64КБ  (что 
соответствует  размеру  конфигурационных ячеек используемой  flash-памяти) и 
размера одной записи в 12Б, максимально возможное число файлов в системе 
оценивается ~5000. 
Стартовый блок файла 
 
Стартовый  блок  каждого  файла  также  организован  по  принципу 
микролога. Он состоит из записей следующего типа: 
typedef struct _file_description { 
 

uint32_t 
 
file_id; 
 
uint32_t    
 
prev_ block; 
 
uint32_t  
 
next_block; 
 
uint32_t 
 
old_me; 
} file_description_t; 
 

Каждая запись описывает одну из логических ячеек, принадлежащих файлу. В 
микрологе может одновременно находиться несколько записей, описывающих 
один  и  тот  же  блок.  При этом корректной считается та из них, что находится 
дальше  от  начала  стартовой  ячейки.  Все  корректные  записи  в  любой  момент 
времени организованы в виде двунаправленного списка. При добавлении в файл 
новых  логических  ячеек  или  изменении  существующих  информация  об  этом 
дописывается в конец микролога, при этом каждая измененная ячейка содержит 
ссылку на устаревшую версию самой себя для отслеживания устаревших ячеек. 
Когда  микролог  заполнит  всю  стартовую  ячейку, все неустаревшие записи из 
него  копируются  в  новую  ячейку, которая становится стартовой для файла (и 
информация об этом записывается в таблицу файлов). 
28 
 

 
Использование  стартового  блока  файла  таким  образом  накладывает 
ограничение  на  максимальный  размер  файла  в  системе.  Исходя  из  размера 
ячейки в 256КБ (что соответствует размеру стандартной ячейки используемой 
flash-памяти)  и  размера  одной  записи  в  16  байт,  максимальный  размер  файла 
составляет  2ГБ.  Кроме  того,  использование  стартового  блока  в  текущей 
реализации  ограничивает минимальный размер файла на  flash-диске размером 
одной ячейки. 
Таблица трансляций 
 
Логический номер ячейки – это некоторое число, которым оперируют все 
структуры,  связанные  с  файлами. Каждая логический номер ячейки в каждый 
момент времени сопоставлен одной физической ячейке flash-памяти. В разные 
моменты времени одному и тому же логическому номеру могут соответствовать 
разные  физические  ячейки.  Информация  о  соответствии  логических  номеров 
физическим  ячейкам  содержится  в  таблице  трансляций.  Эта  таблица 
расположена  в  двух  ячейках,  находящихся  непосредственно  за  ячейками, 
содержащими  таблицу  файлов,  и  организована  очень  похожим  на  таблицу 
файлов способом. Одна из ячеек в каждый момент времени зарезервирована, а 
вторая  (рабочая)  устроена  по  принципу  микролога.  Микролог  заполняется 
записями вида:   
typedef struct _block_entry { 
 

uint32_t    
 
logical_address; 
 
uint32_t 
 
occupied; 
 
uint32_t  
 
physical_address; 
 
uint32_t 
 
age; 
} block_entry_t; 
 
Каждая  запись  содержит  информацию  о  соответствии  логического  номера 
физической  ячейке,  размер  занятого  пространства  внутри  ячейки  и  возраст 
29 
 

соответствующей  физической  ячейки.  В  каждый  момент  времени  в  рабочей 
ячейке может быть несколько записей об одном логическом номере, корректной 
считается  находящаяся  дальше  от  старта  ячейки.  При  добавлении  или 
изменении  информации  о  ячейках  вся  информация  записывается  в  конец 
микролога.  При  переполнении  микролога  происходит  копирование 
неустаревшей  информации  из  одной  ячейки  в  другую,  очищение  рабочей 
ячейки, после чего ячейки меняются ролями. 
Структуры данных в оперативной памяти 
 
При  монтировании  драйвера  файловой  системы  flashfs  происходит 
считывание информации о содержащихся в системе файлах и их расположении 
из описанных таблиц, расположенных во flash-памяти устройства. В отличие от 
JFFS  при  монтировании  надо  просматривать  не  все  ячейки  flash-памяти,  а 
только несколько, что ускоряет процесс монтирования. Из каждого микролога 
выбираются  и  записываются  в  память  только  корректные  значения. 
Информация  из  таблицы  файлов  используется  для  заполнения  структур  vfs. 
Можно  сконфигурировать  файловую  систему  таким  образом,  что  таблица 
трансляций  будет  представлена  в  оперативной  памяти  массивом.  Отдельно 
хранится список свободных блоков flash-памяти. 
4.4.2 Особенности реализации ramfs 
 
Файлы  в  ramfs  представляют  собой  нефрагментированные  линейно 
расположенные  именованные  области  данных.  Структура  файловой  системы 
создается в оперативной памяти при каждой загрузке системы. Информация о 
файлах  хранится  в  двусвязном  списке,  содержащем  элементы  следующей 
структуры: 
 
30 
 

typedef struct _ramfs_file_description { 
        unsigned long start_addr; 
        unsigned int  size; 
        unsigned int  mode; 
        unsigned int  mtime; 
        int           cur_pointer; 
        int           lock; 

} ramfs_file_description_t; 
 
Кроме  информации  о  начальном  адресе файла и его размере в этой структуре 
(файловом  дескрипторе)  содержится  дополнительная  информация  о  правах 
доступа, блокировках и т.п.. Выделение памяти происходит только при наличии 
свободного  нефрагментированного  куска  требуемой  длины.  Информация  о 
свободных кусках памяти системы хранится как отдельный список. 
4.5 Доступ к файлам 
В оперативной памяти системы расположен массив открытых файлов. Он 
содержит  набор  дескрипторов  файлов,  которые  в  данный  момент  открыты. 
Каждый  дескриптор  содержит  информацию  о  начальном  адресе  файла,  его 
размере  и  драйвере  обслуживающей  его  файловой  системы.  При  открытии 
файла происходит его поиск в файловой системе, в частности определяются все 
эти  параметры.  Это  означает,  что  к  открытому  файлу  можно  обращаться, 
используя прямую ссылку на файл, без его повторного поиска в vfs. 
 
В  тех  случаях,  когда  данные  из  flash-памяти  используются  в  режиме 
только  для  чтения,  имеется  возможность  организовать  кеш  этих  файлов  в 
оперативной  памяти.  В  частности,  если  размеры  оперативной  памяти 
позволяют,  можно  все  необходимые  файлы  из  flash-памяти  скопировать  в 
оперативную память при загрузке системы. 
31 
 

 
При  попытках  организовать  детерминированный  доступ  к  файлам 
возникает  проблема  блокировок  при  доступе  к  файлам  из  разных  задач.  В 
текущей реализации при попытке доступа к заблокированному файлу, задача не 
зависает  в  заблокированном  состоянии,  а  за  фиксированное  время  получает 
сообщение  о  невозможности  доступа  к  файлу.  Это  не  решает  проблему 
блокировок  в  общем  случае,  но  позволяет  в  некоторых  задачах  добиться 
детерминированного времени работы системы. 
4.6 Драйвера устройств 
 
На нижнем уровне файловой системы располагаются драйвера устройств 
flash-памяти.  На  данный  момент  в  проекте  Embox  поддерживаются  NOR 
микросхемы flash-памяти Intel серии P30. 
32 
 

Заключение 
 
Тема разработки файловых систем для встраиваемых систем сейчас очень 
актуальна.  Как  внутри  различных  компаний,  так  и  opensource  сообществом 
постоянно  ведутся  и  публикуются  исследования  по  данной  тематике. 
Ознакомившись  с  этими  наработками,  я  попытался  решить  задачу  создания 
файловой системы в рамках своей предметной области. 
 
Описанная  в  работе  файловая  система  реализована  в  рамках  проекта 
Embox.  Она  предоставляет  универсальный  интерфейс  доступа  к  файлам, 
поддерживает  работу  с  flash  и  ram  памятью.  Простота принципов построения 
делает  ее  небольшой  по  объему  (~10  файлов  порядка  100  строк  кода  без 
драйверов устройств) и в то же время приемлемой для использования. В данный 
момент  ведутся  работы  по  ее  улучшению,  в  первую  очередь  в  области 
быстродействия и соответствия стандарту POSIX. Кроме того, ведется работа по 
добавлению новых драйверов файловых систем. 
 
В соответствие с принципами ОСРВ Embox все части файловой системы 
организованы  в  виде  отдельных  независимых  модулей,  что  позволяет 
сконфигурировать ее в минимально необходимой в каждом конкретном случае 
варианте. 
 
Файловая  система  ОСРВ  Embox  нашла  свое  применение  в  проектах 
компании  ЗАО  «Ланит-Терком»  по  разработке  встраиваемых  систем,  в  том 
числе решающих задачи реального времени робототехники. 
33 
 

Список литературы 
1.  Файловая система ОСРВ Embox. Режим доступа: 
http://code.google.com/p/embox/wiki/FileSystemDescription 
2.  David Woodhouse, JFFS: The Journaling  flash file  system. Режим доступа: 
http://sourceware.org/jffs2/jffs2-html/ 
3.  Theodore Tso, SSDs, Journaling  and noatime/relatime,  Режим доступа: 
http://www.linuxfoundation.org/news-
media/blogs/browse/2009/03/ssd%E2%80%99s-journaling-and-
noatimerelatime 
4.  М. Тим Джонс, Анатомия ext4. Режим доступа: 
http://www.ibm.com/developerworks/ru/library/l-anatomy-ext4/ 
5.  М. Тим Джонс, Анатомия виртуального коммутатора файловых систем 
Linux.  Режим доступа: http://www.ibm.com/developerworks/ru/library/l-
virtual-filesystem-switch/index.html 
6.  М. Тим Джонс, Анатомия файловой системы Linux.  Режим доступа: 
http://www.ibm.com/developerworks/ru/library/l-linux-filesystem 
7.  М. Тим Джонс, Анатомия файловых систем Linux  для флэш-носителей. 
Режим доступа: http://www.ibm.com/developerworks/ru/library/l-flash-
filesystems 
8.  Э. Таненбаум, Современные операционные системы. 2-е изд. – СПб.: 
Питер, 2007. – 1038 с.: ил. 
9.  Э. Таненбаум, А. Вудхалл, Операционные системы. Разработка и 
реализация. 3-е изд. – СПб.: Питер, 2007. – 704 с.: ил. 
34 
 

10. Coffee filesystem  guide. Режим доступа: 
http://www.sics.se/contiki/wiki/index.php/Coffee_Filesystem_Guide 
11. POSIX, Portable Operating  System Interface for Unix,  режим доступа: 
http://standards.ieee.org/develop/wg/POSIX.html 
12. Режим доступа: http://www.testfreaks.com/blog/information/usb-flash-drive-
comparison-part-2-fat32-vs-ntfs-vs-exfat 
13. Режим доступа: http://sites.google.com/site/gouffs/home 
35 
 

1   2   3   4   5   6   7   8   9

Похожие:

  дипломная работа  icon  дипломная работа 
Дипломная  работа  А. В.  Александрова  на  тему   Субъективация  повествования  и  её 
  дипломная работа  icon  дипломная работа 
Работа  посвящена  изучению  и  применению  методов  классического  компьютерного 
  дипломная работа  icon  Дипломная  работа
Выпускная  квалификационная  работа  бакалавра,  специалиста  и  магистра  представляет 
  дипломная работа  iconДипломная работа ПО русской литературе  
...
  дипломная работа  iconДипломная работа 

  дипломная работа  iconДипломная работа 

  дипломная работа  iconДипломная работа 

  дипломная работа  iconДипломная работа 

  дипломная работа  iconДипломная работа 

  дипломная работа  iconДипломная работа 

Разместите кнопку на своём сайте:
TopReferat


База данных защищена авторским правом ©topreferat.znate.ru 2012
обратиться к администрации
ТопРеферат
Главная страница