Предметный указатель
Контакты
Пятницкое шоссе д.37
Как до нас добраться ?
Логическая организация жесткого диска системы FAT

 

Логическая организация жесткого диска системы FAT

 

Статья из цикла "прошлое". Хотя некоторые моменты актуальны и досих пор

Жесткий диск состоит из нескольких металлических пластин, головок чтения-записи и механизма их позиционирования, помещенных в герметичную коробку (банку). К нему прикреплена печатная плата с контроллером и буферной памятью (кэшем), которая посредством шлейфа (40 или 80 жил) соединяется с материнской платой или отдельным контроллером. Так вот, металлические пластины условно разбиты на концентрические дорожки, а дорожки разделены на секторы. Дорожки на равном расстоянии от центра на всех поверхностях пластин объединяются в цилиндры. Таким образом, для чтения определенного сектора данных (его емкость принята равной 512 байт) нужно: 1) отвести головки на нужное расстояние от центра, то есть позиционировать на определенный цилиндр; 2) начать просмотр дорожки на нужной пластине, активировав соответствующую головку; 3) производить чтение всей информации до появления заголовка сектора, номер которого (содержится в этом заголовке) совпадает с нужным нам для операции чтения или записи. В соответствии с такой схемой метод нахождения необходимой информации на жестком диске называется CHS-адресацией (Cylinder-Head-Sector).

BIOS (базовая система ввода-вывода) является набором системных подпрограмм (функций), среди которых есть и программа чтения-записи данных на жестком диске. Для получения содержимого одного сектора требуется указать его CHS-адрес. Число секторов, цилиндров и головок BIOS'у должно быть известно, для этого и существует автодетект в Setup. Впрочем, информация о геометрии, используемая для работы функций доступа к диску, даже близко не соответствует реальной геометрии современного жесткого диска. У него 1-3 пластины, одна из которых может использоваться только с одной стороны, и 1-6 головок. Поэтому контроллер жесткого диска производит трансляцию поступающих адресов, такую же трансляцию производит и BIOS, работая по механизму LBA (Logical Block Addressing). Но это уже другая история.

В соответствии с идеологией MS-DOS жесткий диск может состоять из так называемых "разделов" - независимых областей диска, которые могут быть построены по схеме любой операционной системы, то есть использовать любую файловую систему. Таких разделов должно быть два - основной (Primary), с которого обычно осуществляется загрузка, и расширенный (Extended), который может быть разделен на несколько частей-подразделов (логических дисков). Таким образом, первый раздел диска самостоятелен, остальные объединяются в группу. Каждый раздел имеет принадлежность к той или иной файловой системе.

В рамках DOS (и основанных на этой же операционной системе Windows3.x/95/98/ME) существуют три файловых системы - FAT12, FAT16 и FAT32. Об их отличиях я упомяну ниже.


Системные секторы

Самый первый сектор любого жесткого диска имеет название Master Boot Record, MBR. Он состоит из двух частей - программы начального загрузчика и таблицы разделов (Disk Partition Table, DPT). DPT состоит из четырех записей, обозначающих адрес начала раздела, его размер в секторах, адрес конца и тип файловой системы. Конечно, используются только две записи - для основного и расширенного раздела, потому что каждый подраздел (логический диск) имеет такую же DPT с указанием адреса следующего подраздела. Задача загрузчика в MBR - дать возможность загрузки с нужного раздела (т.е. использовать несколько операционных систем). Стандартный загрузчик DOS предоставляет весьма ограниченный механизм выбора - загрузка возможна с того раздела, у которого установлен флаг активности таблице DPT.

Самый первый сектор раздела называется Boot Sector. В его составе также есть загрузочная программа и таблица BIOS Parameter Block, BPB. В этой таблице содержится информация о местонахождении и размере другой важной области - таблицы размещения файлов, FAT. По своей сути FAT - это большой массив элементов, каждый элемент соответствует каждому кластеру. Кластер - блок секторов (от 8 до 128), элемент распределения всего дискового пространства раздела. Каждому файлу при его создании выделяется нужное число кластеров. Номер первого кластера заносится в каталог (директорий, папку), а соответствующий этому кластеру элемент FAT содержит номер второго кластера. Элемент FAT, соответствующий второму кластеру, содержит номер третьего кластера и т.д. Весь FAT состоит из таких цепочек (Chains).

Если элемент FAT не связан ни в одну цепочку и при этом не равен 0, он называется "потерянным" (Lost Cluster). "Потеря" кластеров происходит при перезагрузке в момент записи цепочки в FAT, например, при создании/изменении файла, когда операция записи прерывается. Конечно, это не самые страшные последствия неожиданной перезагрузки, но все же терять место на диске не очень хочется. Программисты из Microsoft хорошо знали о "стабильности" своей Windows, поэтому и запускается Scandisk автоматически.

Если файл впоследствии увеличивается в размерах, ему назначаются новые кластеры из числа свободных, причем чаще всего они находятся в другом месте диска. Цепочка "перепрыгивает" другие цепочки - вот вам и фрагментация, которую устраняют программы-дефрагментаторы, переносящие файлы так, чтобы их кластеры шли друг за другом по порядку.

Хотя система цепочек и является достаточно эффективной и простой, у нее есть недостатки. Во-первых, низкая надежность - при исчезновении одного элемента весь файл будет нечитаемым, а порча FAT означает потерю большого количества (если не всех) файлов. Для устранения этого недостатка существуют две одинаковых копии FAT. Второе - если размер файла не кратен размеру кластера, образуется слек (Slack) - часть кластера, не занятая полезной информацией. Чем больше размер кластера, тем большая часть диска занята слеком. Для файла длиной 1 байт вы теряете весь кластер, а если он имеет большой размер (32 Кбайта, например), то потери на слек могут составлять 30-50% от общей емкости диска (кстати, проверить их можно программой Sandra - модуль Drive Information).

Размер элемента FAT дает название самой файловой системе. FAT12 имеет 12-битные элементы, которые позволяют организовать на диске около 4-х тысяч кластеров. FAT16 имеет 16-битные элементы, число кластеров - 65530. FAT32 - 32-битные элементы, около 4 млрд. кластеров. Чем больше на диске будет кластеров, тем меньше можно сделать размер самого кластера и тем самым меньше потерять места. Поэтому FAT12 используется только для гибких дисков, FAT16 - для дисков емкостью до 500 Мб (в принципе, можно и до 2 Гб).

Начальная загрузка

Загрузка операционной системы происходит следующим образом:

  1. BIOS, после проведения первичной самодиагностики (POST, Power-On Self-Test), считывает самый первый сектор с того устройства, которое задано первым в Setup (Advanced Features, Boot Sequence или First Boot Device), и начинает его выполнение.
  2. Загрузчик, который был в этом секторе, просматривает свою таблицу разделов на предмет наличия активного (загрузочного) раздела, вычисляет адрес загрузочного сектора активного раздела, считывает и запускает этот сектор.
  3. Загрузчик из boot-сектора выполняет считывание и запуск файлов операционной системы; для DOS 7.1, входящей в состав Windows95/98, это всего один файл - IO.SYS.
  4. IO.SYS сначала просматривает файл CONFIG.SYS - ищет там загрузочное меню, устанавливает драйверы устройств, которые там могут быть заданы (кроме того, HIMEM. SYS, IFSHLP.SYS и SETVER.EXE загружаются в любом случае), после чего запускает обработчик командной строки COMMAND.COM.
  5. COMMAND.COM выполняет пакетный файл AUTOEXEC.BAT, после чего вызывает программу WIN.COM; впрочем, если подправить файл MSDOS.SYS (бывший компонент операционной системы, сейчас просто конфигурационный файл), COMMAND.COM не начнет загрузку Windows, перейдя в режим диалога.

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

 

 

Восстановление данных

Доставка курьером

Бесплатно

Доставка курьером
от Заказчика в Лабораторию - БЕСПЛАТНАЯ.
Обратная доставка является платной - 300 руб.

Оформление заявки на восcтановление данных
Поля, помеченные (*) обязательны для заполнения.
Ваше имя
E-mail
Телефон*
Опишите Вашу проблему
Наш менеджер свяжется с Вами в течение 30 минут!