Все, что вы хотели знать о файловых системах: Часть 1

Привет, хабр! Это первая часть моей серии статей по файловый системам

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

Но что же это за два волшебных слова? Файловая — значит, как-то взаимодействует с файлами, система — значит она их систематизирует. Это понятно, почти каждый школьник может так ответить.

Но что такое файловая система по настоящему? Это — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов (файл это — именованная область данных на носителе информации, используемая как базовый объект взаимодействия с данными в операционных системах).

Что такое носитель информации? Проще говоря, носитель информации — любой материальный объект или среда, используемый человеком, способный достаточно длительное время сохранять (нести) в своей структуре занесённую на него информацию, без использования дополнительных устройств (например, источника энергии).

К электронным носителям относят носители для однократной или многократной записи (обычно цифровой) электрическим способом:

  1. Оптические (CD-ROM, DVD-ROM, Blu-ray Disc);

  2. Полупроводниковые (флеш-память, SSD-диски);

  3. Магнитные (магнитные ленты, дискеты, жёсткие диски).

Итак, получается данные, файлы, хранятся на определенном запоминающем устройстве, в компьютерной памяти. Запоминающее устройство (ЗУ) — устройство, предназначенное для записи и хранения данных. В основе работы запоминающего устройства может лежать любой физический эффект, обеспечивающий приведение системы к двум или более устойчивым состояниям. ЗУ располагает компьютерной памятью.

Жесткий диск или HDD (Накопитель на жёстких магнитных ди́сках, или НЖМД (англ. hard (magnetic) disk drive, HDD, HMDD), жёсткий диск — запоминающее устройство (устройство хранения информации, накопитель) произвольного доступа, основанное на принципе магнитной записи. Является основным накопителем данных в большинстве компьютеров)

Жесткий диск или HDD (Накопитель на жёстких магнитных ди́сках, или НЖМД (англ. hard (magnetic) disk drive, HDD, HMDD), жёсткий диск — запоминающее устройство (устройство хранения информации, накопитель) произвольного доступа, основанное на принципе магнитной записи. Является основным накопителем данных в большинстве компьютеров)

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

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

Задачей компьютерной памяти является хранение в своих ячейках состояния внешнего воздействия, запись информации. Эти ячейки могут фиксировать самые разнообразные физические воздействия. Они функционально аналогичны обычному электромеханическому переключателю и информация в них записывается в виде двух чётко различимых состояний — 0 и 1 («выключено»/«включено»). Специальные механизмы обеспечивают доступ (считывание, произвольное или последовательное) к состоянию этих ячеек.

Процесс доступа к памяти разбит на разделённые во времени процессы — операцию записи и операцию чтения, во многих случаях эти операции происходят под управлением отдельного специализированного устройства — контроллера памяти.

Также различают операцию стирания, удаления памяти — занесение (запись) в ячейки памяти одинаковых значений, обычно 0016 или FF16 (hex, шестнадцатеричный формат, помимо чисел есть буквы, которым присвоены значения: A=10; B=11; C=12; E=13; D=14; F=15).

Наиболее известные запоминающие устройства, используемые в персональных компьютерах: модули оперативной памяти (ОЗУ), жёсткие диски (винчестеры), дискеты (гибкие магнитные диски), CD- или DVD-диски, а также устройства флеш-памяти.

Модуль оперативной памяти DRAM, вставленный в материнскую плату

Модуль оперативной памяти DRAM, вставленный в материнскую плату

Устройство хранения информации на флеш-памяти

Устройство хранения информации на флеш-памяти

DRAM (англ. dynamic random access memory — динамическая память с произвольным доступом) — тип компьютерной памяти, отличающийся использованием полупроводниковых материалов, энергозависимостью и возможностью доступа к данным, хранящимся в произвольных ячейках памяти (см. запоминающее устройство с произвольным доступом). Модули памяти с памятью такого типа широко используются в компьютерах в качестве оперативных запоминающих устройств (ОЗУ), также используются в качестве устройств постоянного хранения информации в системах, требовательных к задержкам.

Флеш (англ. flash memory) — разновидность полупроводниковой технологии электрически перепрограммируемой памяти (EEPROM). Это же слово используется в электронной схемотехнике для обозначения технологически законченных решений постоянных запоминающих устройств в виде микросхем на базе этой полупроводниковой технологии. В быту это словосочетание закрепилось за широким классом твердотельных устройств хранения информации.

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

Первые компьютеры использовали запоминающие устройства исключительно для хранения обрабатываемых данных. Их программы реализовывались на аппаратном уровне в виде жёстко заданных выполняемых последовательностей. Любое перепрограммирование требовало огромного объёма ручной работы по подготовке новой документации, перекоммутации, перестройки блоков и устройств и т. д. Использование архитектуры фон Неймана, предусматривающей хранение компьютерных программ и данных в общей памяти, коренным образом переменило ситуацию.

Любая информация может быть измерена в битах и потому, независимо от того, на каких физических принципах и в какой системе счисления функционирует цифровой компьютер (двоичной, троичной, десятичной и т. п.), числа, текстовая информация, изображения, звук, видео и другие виды данных можно представить последовательностями битовых строк или двоичными числами. Это позволяет компьютеру манипулировать данными при условии достаточной ёмкости системы хранения (например, для хранения текста романа среднего размера необходимо около одного мегабайта).

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

Но вернемся к файловым системам

Компьютерная память: Что, как и когда

Пример файловой системы

Пример файловой системы

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

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

Одним из основных компонентов первых компьютеров были электромагнитные переключатели, разработанные известным американским ученым Джозефом Хенри еще в 1835 году, когда ни о каких компьютерах никто даже не помышлял. Простой механизм состоял из обмотанного проводом металлического сердечника, подвижной железной арматуры и нескольких контактов. Разработка Хенри легла в основу электрического телеграфа Сэмюеля Морзе и Чарльза Витстоуна.

Первый компьютер, построенный на переключателях, появился в Германии в 1939 году. Инженер Конрад Зюс использовал их при создании системной логики устройства Z2. К сожалению, прожила машина недолго, а ее планы и фотографии были утеряны во время бомбардировок Второй мировой войны. Следующее вычислительное устройство Зюса (под именем Z3) увидело свет в 1941 году. Это был первый компьютер, управляемый программой. Основные функции машины реализовывались при помощи 2000 переключателей. Конрад собирался перевести систему на более современные компоненты, но правительство прикрыло финансирование, посчитав, что идеи Зюса не имеют будущего. Как и ее предшественница, Z3 была уничтожена во время бомбардировок союзников.

Электромагнитные переключатели работали очень медленно, но развитие технологий не стояло на месте. Вторым типом памяти для ранних компьютерных систем стали линии задержки. Информацию несли электрические импульсы, которые преобразовывались в механические волны и на низкой скорости перемещались через ртуть, пьезоэлектронный кристалл или магниторезистивную катушку. Есть волна — 1, нет волны — 0. В единицу времени по проводящему материалу могли путешествовать сотни и тысячи импульсов. По завершении своего пути каждая волна трансформировалась обратно в электрический импульс и отсылалась в начало — вот вам и простейшая операция обновления.

Линии задержки разработал американский инженер Джон Преспер Экерт. Компьютер EDVAC , представленный в 1946 году, содержал два блока памяти по 64 линии задержки на основе ртути (5,5 Кб по современным меркам). На тот момент этого было более чем достаточно для работы. Вторичная память также присутствовала в EDVAC — результаты вычислений записывались на магнитную пленку. Другая система,  UNIVAC 1 , увидевшая свет в 1951 году, использовала 100 блоков на основе линий задержки, а для сохранения данных у нее была сложная конструкция со множеством физических элементов.

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

Под загадочным словосочетанием «вакуумная трубка» скрывается довольно простой по строению элемент. Он напоминает обычную лампу накаливания. Нить заключена в безвоздушное пространство, при нагреве она испускает электроны, которые попадают на положительно заряженную металлическую пластину. Внутри лампы под напряжением образуется поток электронов. Вакуумная трубка умеет или пропускать, или блокировать (фазы 1 и 0) проходящий через нее ток, выступая в роли электронного компонента компьютеров. Во время работы вакуумные трубки сильно нагреваются, их надо интенсивно охлаждать. Зато они намного быстрее, чем допотопные переключатели.

Первичная память на основе этой технологии появилась в 1946–1947 годы, когда изобретатели Фредди Вильямс и Том Килберн представили трубку Вильямса — Килберна. Метод сохранения данных был весьма остроумным. На трубке при определенных условиях появлялась световая точка, которая слегка заряжала занимаемую поверхность. Зона вокруг точки приобретала отрицательный заряд (ее называли «энергетическим колодцем»). В «колодец» можно было поместить новую точку или оставить его без внимания — тогда первоначальная точка быстро исчезала. Эти превращения истолковывались контроллером памяти как двоичные фазы 1 и 0. Технология была очень популярна. Память на трубках Вильямса — Килберна устанавливали в компьютеры Ferranti Mark 1 ,  IAS ,  UNIVAC 1103 ,  IBM 701 ,  IBM 702 и Standards Western Automatic Computer (SWAC).

Параллельно свою трубку, именуемую селектрон, разрабатывали инженеры из компании Radio Corporation of America под управлением ученого Владимира Зворыкина. По задумке авторов селектрон должен был вмещать до 4096 бит информации, что в четыре раза больше, чем у трубки Вильямса — Килберна. Предполагалось, что к концу 1946 года будет произведено около 200 селектронов, но производство оказалось очень дорогим.

Вплоть до весны 1948-го Radio Corporation of America не выпустила ни одного селектрона, но работа над концептом продолжалась. Инженеры изменили дизайн трубки, и в продаже появилась уменьшенная ее версия емкостью 256 бит. Мини-селектроны были быстрее и надежнее трубок Вильямса — Килберна, но стоили по $500 за штуку. И это при массовом производстве! Селектронам, однако, удалось попасть в вычислительную машину — в 1953 году компания RAND выпустила компьютер под забавным названием JOHNNIAC (в честь Джона фон Неймана). В системе были установлены уменьшенные 256-битные селектроны, а общий объем памяти составлял 32 байта.

Наравне с вакуумными трубками в некоторых компьютерах того времени использовалась барабанная память, изобретенная Густавом Таусчеком в 1939 году. Простая конструкция включала большой металлический цилиндр, покрытый сплавом из ферромагнетика. Считывающие головки, в отличие от современных винчестеров, не перемещались по поверхности цилиндра. Контроллер памяти ждал, пока информация самостоятельно пройдет под головками. Барабанная память использовалась в компьютере Атанасова — Берри и некоторых других системах. К сожалению, ее производительность была очень низкой.

Но что такое SSD? Строго говоря, SSD появились задолго до изобретения флэш-памяти. Ведь что такое, по сути, Solid State Drive? Это накопитель информации, который не содержит каких-либо механических компонентов. Таким образом, самым первым в мире SSD можно назвать творение корпорации Dataram с гордым названием Bulk Core, представленное в 1976 году. Стальное шасси габаритами 19 на 15.75 дюймов содержало 8 планок энергозависимой RAM-памяти, каждая из которых имела объем 256 килобайт. Девайс размером с хороший UPS (и, благодаря наличию резервных аккумуляторов, соответствующим весом) стоил на старте 9700 долларов США. Устройства нашли применение в промышленности и наукоемких отраслях, однако из-за дороговизны и ненадежности (все же риск потери данных был чрезвычайно велик) так и не стали массовыми.

e82f8c0442088efa7fd734b1dc062a97.jpeg

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

Обычно вся информация записывается, хранится и обрабатывается на различных цифровых носителях в виде файлов. Далее, в зависимости от типа файла, кодируется в виде знакомых расширений — *exe, *doc, *pdf и т.д., происходит их открытие и обработка в соответствующем программном обеспечении. Мало кто задумывается, каким образом происходит хранение и обработка цифрового массива в целом на соответствующем носителе. Операционная система воспринимает физический диск хранения информации как набор кластеров размером 512 байт и больше. Драйверы файловой системы организуют кластеры в файлы и каталоги, которые также являются файлами, содержащими список других файлов в этом каталоге. Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.Запись файлов большого объема приводит к необходимости фрагментации, когда файлы не сохраняются как целые единицы, а делятся на фрагменты. Каждый фрагмент записывается в отдельные кластеры, состоящие из ячеек (размер ячейки составляет один байт). Информация о всех фрагментах, как части одного файла, хранится в файловой системе.Файловая система связывает носитель информации (хранилище) с прикладным программным обеспечением, организуя доступ к конкретным файлам при помощи функционала взаимодействия программ API. Программа, при обращении к файлу, располагает данными только о его имени, размере и атрибутах. Всю остальную информацию, касающуюся типа носителя, на котором записан файл, и структуры хранения данных, она получает от драйвера файловой системы.На физическом уровне драйверы ФС оптимизируют запись и считывание отдельных частей файлов для ускоренной обработки запросов, фрагментации и «склеивания» хранящейся в ячейках информации. Данный алгоритм получил распространение в большинстве популярных файловых систем на концептуальном уровне в виде иерархической структуры представления метаданных (B-trees). Технология снижает количество самых длительных дисковых операций — позиционирования головок при чтении произвольных блоков. Это позволяет не только ускорить обработку запросов, но и продлить срок службы HDD. В случае с твердотельными накопителями, где принцип записи, хранения и считывания информации отличается от применяемого в жестких дисках, ситуация с выбором оптимальной файловой системы имеет свои нюансы.

Давайте подведем итоги, и скажем, что такое файловая система: Файловая система — это способ, система, которая позволяет структуировать и управлять данными на устройстве (HDD, SSD, flash-накопитель, дискета и т.д). ФС отвечает за то, как информация будет распределена. Обычно, она включает в себя: блок данных, таблицы индексов, метаданные, журналы транзакций

  • Блок данных — физический блок информации для хранения файлов или частей файлов. Представляет собой небольшие фрагменты данных, которые могут быть прочитаны или записаны на диск. Блоки данных обычно имеют фиксированный размер и являются основными единицами хранения информации в файловых системах.

  • Таблицы индексов используются для организации и упорядочивания блоков данных в файловой системе. Индексы помогают ускорить процессы чтения и поиска файлов и данных в файловых системах. Таблицы индексов содержат информацию о расположении блоков данных и упрощают поиск.

  • Журналы транзакций — файлы, которые записывают изменения, происходящие в файловой системе во время выполнения транзакций для обеспечения целостности данных и восстановления после сбоев. Содержат информацию о действиях, совершенных в файловой системе, таких как создание, удаление или изменение файлов, и могут быть использованы для восстановления состояния файловой системы в случае непредвиденных событий.

  • Метаданные — информация о размере файла, его типе, времени создания и изменения, правах доступа и других атрибутах. Обычно хранятся в специальных метаданных таблицах или блоках внутри файловой системы. Метаданные помогают системе управлять и организовывать файлы и папки, а также обеспечивают надежность и безопасность взаимодействия с файловой системой.

Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же как и о том, на каком физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке флеш-памяти или другом) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

С точки зрения операционной системы (ОС), весь диск представляет собой набор кластеров (как правило, размером, кратным 512 байт). Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

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

Что такое иерархия каталогов?

Практически всегда файлы на дисках объединяются в каталоги.

В простейшем случае все файлы на данном диске хранятся в одном каталоге. Такая одноуровневая схема использовалась в CP/M и в первой версии MS-DOS 1.0. Иерархическая файловая система со вложенными друг в друга каталогами впервые появилась в Multics, затем — в UNIX.

В настоящее время одноуровневые файловые системы используются очень редко, за исключением устройств с малой вычислительной мощностью и объёмом памяти, например, микроконтроллера ESP8266, использующего в собственной флэш-памяти (до 16 Мб) собственную файловую систему SPIFFS.

Каталоги на разных дисках могут образовывать несколько отдельных деревьев, как в DOS/Windows, или же объединяться в одно дерево, общее для всех дисков, как в UNIX-подобных системах (Linux, BSD системы и другие).

В UNIX существует только один корневой каталог, а все остальные файлы и каталоги вложены в него. Чтобы получить доступ к файлам и каталогам на каком-нибудь диске, необходимо смонтировать этот диск командой mount. Например, чтобы открыть файлы на CD, нужно, говоря простым языком, сказать операционной системе: «возьми файловую систему на этом компакт-диске и покажи её в каталоге /mnt/cdrom». Все файлы и каталоги, находящиеся на CD, появятся в этом каталоге /mnt/cdrom, который называется точкой монтирования (англ. mount point). В большинстве UNIX-подобных систем съёмные диски (дискеты и CD), флеш-накопители и другие внешние устройства хранения данных монтируют в каталог /mnt, /mount или /media. Unix и UNIX-подобные операционные системы также позволяют автоматически монтировать диски при загрузке операционной системы.

Функции файловой системы

Основными функциями файловой системы являются:

  • размещение и упорядочивание на носителе данных в виде файлов;

  • определение максимально поддерживаемого объёма данных на носителе информации;

  • создание, чтение и удаление файлов;

  • назначение и изменение атрибутов файлов (размер, время создания и изменения, владелец и создатель файла, доступен только для чтения, скрытый файл, временный файл, архивный, исполняемый, максимальная длина имени файла и т. п.);

  • определение

Файловые системы и их краткий обзор

В мире существует огромное количество файловых систем. В этой статье я попытаюсь бегло рассказать вам о них.

Также вы можете почитать их на сайте OSDev, если вы вдруг захотите создать свою операционную систему

  1. Файловая система «Fat». Сокращенная аббревиатура «Fat» расшифровывается как «таблица размещения файлов» (File Allocation Table). Это простая классическая архитектура файловой системы, изначально предназначенная для небольших дисков и простых структур папок. Иными словами, файловая система «Fat» представляет собой групповой метод организации, в котором таблица размещения файлов выделена в отдельную логическую область и находится в начале тома.

    Разработана Биллом Гейтсом и Марком МакДональдом в 1976—1977 годах. Использовалась в качестве основной файловой системы в операционных системах семейств MS-DOS и Windows 9x.

    Версии Fat:

    Существует четыре версии FAT — FAT12, FAT16, FAT32 и exFAT (FAT64). Они различаются разрядностью записей в дисковой структуре, то есть количеством бит, отведённых для хранения номера кластера. FAT12 применяется в основном для дискет, FAT16 — для дисков малого объёма. На основе FAT была разработана новая файловая система exFAT (extended FAT), используемая преимущественно для флеш-накопителей.

    Изначально FAT не поддерживала иерархическую систему каталогов — все файлы располагались в корне диска. Это было сделано для упрощения, так как на односторонних дискетах ёмкостью всего 160–180 Кбайт сортировать немногочисленные файлы по каталогам попросту не было смысла. С распространением дискет на 320 и более килобайт хранение всех файлов в корне оказалось неудобным, к тому же малый размер корневого каталога ограничивал количество файлов на диске. Каталоги были введены с выходом MS-DOS 2.0.

    В разных операционных системах также были внедрены различные расширения FAT. Например, в DR-DOS имеются дополнительные атрибуты доступа к файлам; в Windows 95, Linux — поддержка длинных имён файлов (LFN) в формате Unicode (Virtual FAT — VFAT); в OS/2 — расширенные атрибуты всех файлов.

    Структура системы FAT

    В файловой системе FAT смежные секторы диска объединяются в единицы, называемые кластерами. Количество секторов в кластере равно степени двойки (см. далее). Для хранения данных файла отводится целое число кластеров (минимум один), так что, например, если размер файла составляет 40 байт, а размер кластера 4 Кбайт, реально занят информацией файла будет лишь 1% отведённого для него места. Во избежание подобных ситуаций целесообразно уменьшать размер кластеров, а для сокращения объёма адресной информации и повышения скорости файловых операций — наоборот. На практике выбирают некоторый компромисс. Так как ёмкость диска вполне может и не выражаться целым числом кластеров, обычно в конце тома присутствуют так называемые surplus sectors — «остаток» размером менее кластера, который не может отводиться ОС для хранения информации.

    Пространство тома FAT32 логически разделено на три смежные области:

    1. Зарезервированная область. Содержит служебные структуры, которые принадлежат загрузочной записи раздела (Partition Boot Record — PBR, для отличия от Master Boot Record — главной загрузочной записи диска; также PBR часто некорректно называется загрузочным сектором) и используются при инициализации тома;

    2. Область таблицы FAT, содержащая массив индексных указателей («ячеек»), соответствующих кластерам области данных. Для повышения надёжности на диске обычно представлено две копии таблицы FAT;

    3. Область данных, где записано собственно содержимое файлов — то есть текст текстовых файлов, кодированное изображение для файлов рисунков, оцифрованный звук для аудиофайлов и т. д.

    4. В FAT12 и FAT16 также специально выделяется область корневого каталога. Она имеет фиксированное положение (непосредственно после последнего элемента таблицы FAT) и фиксированный размер в 32-байтных элементах, то есть при описании в Partition Boot Record указывается именно количество 32-байтных элементов, каждый из которых описывает какой-либо элемент корневого каталога (будь то файл или другой вложенный каталог).

    Если кластер принадлежит файлу, то соответствующая ему ячейка в таблице FAT содержит номер следующего кластера этого же файла. Если ячейка соответствует последнему кластеру файла, то она содержит специальное значение (0xFFFF для FAT16). Таким образом выстраивается цепочка кластеров файла. Неиспользуемым кластерам в таблице соответствуют нули. «Плохим» кластерам (которые исключаются из обработки, например, по причине нечитаемости соответствующей области устройства) также соответствует специальный код (0xFFF7 для FAT16).

    При удалении файла первый знак имени заменяется специальным кодом 0xE5, и цепочка кластеров файла в таблице размещения обнуляется. Поскольку информация о размере файла (которая располагается в каталоге рядом с именем файла) при этом остаётся нетронутой, в случае, если кластеры файла располагались на диске последовательно и не были перезаписаны новой информацией, удалённый файл можно восстановить.

ea86abc74f6ab2a13ed9041f78c1b69e.jpgf16bd80d2b277e83146c4623ef7f5f83.jpg

  1. HPFS

    HPFS (аббр. от англ. High Performance File System) — файловая система, разработанная специалистами Microsoft и IBM на основе опыта IBM по созданию файловых систем MVS, VM и виртуального метода доступа. Со стороны Microsoft проектом руководил опытный системный программист Гордон Летвин.

    Структура HPFS

    Диск в HPFS делится на секторы фиксированного размера (512 байт в текущей реализации, при этом номер сектора или их количество кодируются во внутренних структурах как 4-байтовое беззнаковое целое, что позволяет адресовать диски размером до 232×512 = 2 терабайта).

    В начале диска расположены несколько управляющих блоков:

    1. Загрузочный сектор DOS-овского вида.

    2. SuperBlock содержит информацию о геометрии диска, указатели на битовые карты (т. н. битмапы, от англ. bitmaps) свободного пространства, указатель на корневой каталог, размер дисковой полосы, номер полосы с каталогами, указатель на список сбойных блоков и т. п. SuperBlock также содержит дату последнего запуска CHKDSK. Обычно изменяют SuperBlock только программы CHKDSK и FORMAT.

    3. SpareBlock содержит указатели на пул HOTFIX-areas, пул Fault-Tolerance областей (только HPFS386 использует Fault-Tolerance), пул блоков для операций на почти заполненном диске и другие указатели, флаги и дескрипторы.

    4. Область начальной загрузки.

    5. Область секторов, используемых (временно) для выполнения операций, требующих дополнительной дисковой памяти. Эта область например, иногда задействуется при переименовании файла на заполненном диске.

    6. Другие области.

    Для определения того, свободен сектор или занят, HPFS использует битовые карты, в которых каждый бит соответствует одному сектору. Если бит содержит 1, это означает, что сектор занят, иначе он свободен. Если бы на весь диск была только одна битовая карта, то для её подкачки приходилось бы перемещать головки чтения/записи в среднем через половину диска. Чтобы избежать этого, HPFS разбивает диск на «полосы» (или группы, от англ. bands) длиной по 8 мегабайт и хранит битмапы свободных секторов в начале или конце каждой полосы.

В следующей части мы рассмотрим другие популярные и не очень файловые системы

© Habrahabr.ru