Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Краткие теоретические сведения. Файловая система (ФС) FAT отличается простотой, что позволяет относи­тельно несложно запрограммировать низкоуровневый доступ к ней




Файловая система (ФС) FAT отличается простотой, что позволяет относи­тельно несложно запрограммировать низкоуровневый доступ к ней. По этой причине она до сих пор применяется для сменных носителей (флэш-накопи­телей, флэш-карт) и специализированных устройств с ограниченными ресур­сами, а ее поддержка присутствует практически во всех современных ОС.

Файлы в ФС FAT хранятся в виде связных списков блоков – кластеров. Кластер пред­ставляет собой объединение от 1 до 64 целых секторов и, следовательно, имеют размер от 512 байт до 32 Кбайт. Таким образом, каждый файл, в зависимости от размера, представляется одним или несколькими кластерами, образующими цепочку (chain).

Ссылки, обеспечивающие связность списка, хранятся отдельно от дан­ных, в специальной структуре – таблице размещения файлов (File Alloca­tion Table – FAT), размещение которой на диске фикси­ровано и заранее известно. Каждая ячейка таблицы позиционно соответствует одному кластеру и содержит номер следующего кластера в цепочке. Кроме того, следующие значения ячеек зарезервированы для специальных случаев: 0 – пустой кластер, FFFh – послед­ний кластер в цепочке, FF7h – кластер помечен как дефектный и не исполь­зуется (здесь приведены значения для FAT12, для прочих они аналогичны). Первые две ячейки таблицы объединены и содержат код типа носителя.

Наибольшее количество кластеров, представимых таблицей, зависит от разрядности ее ячеек. На практике встречаются 12‑, 16‑ и 32‑разрядные версии FAT – соответственно FAT12, FAT16 и FAT32 (в FAT32 реально используются лишь 28-разрядные значения, но хранятся они в 4‑байтовых ячейках). Малое число кластеров на разделах большого объема приводит к слишком большому размеру каждого кластера и, как следствие, непроизводительному расходу дис­кового пространства. Для сравнения: у фай­ловых систем, свободных от ограни­чений FAT, характерный размер распреде­ляемых блоков составляет несколько килобайт.

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

Сканирование цепочки кластеров требует знания ее начала – номера первого кластера. Он содержится в записи директория, описывающего файл. Записи директориев – 32-байтовые, содержат имя файла, его атрибуты и некоторую служебную информацию, в том числе и номер первого кластера файла (часть записей может быть занято «длинными» именами файлов – они хранятся разбитыми на фрагменты в нескольких соседних записях). Поэтому первоначально нужно считать содержимое директория, найти в нем нужное имя файла и взять из этой записи номер первого кластера.

Сведения о размещении таблицы FAT, ее размере, размере кластера и другая служебная информация о разделе могут быть получены из блока параметров BIOS (BIOS Parameters Block – BPB). Он содержится вместе с кодом загрузчика раздела (Boot Record) в первом его логическом секторе. Если носитель не предполагает наличия разделов (например дискета), то этот же сектор является и первым физическим, и других загрузчиков носитель не имеет.

При наличии разделов (логических дисков) потребуется также обраба­тывать таблицы разделов – Partition Tables, описывающие их размещение, тип и размеры. Первая таблица разделов содержится в «главной» загрузочной записи (MBR – Master Boot Record), в первом физическом секторе диска. Если среди разделов есть расширенные, то они сами включают вложенные разделы и поэтому в первом своем секторе также содержат таблицу разделов.

Работа с FAT требует организовать низкоуровневый доступ к диску, который осуществляется на уровне секторов. Сектор имеет фиксированный в пределах одного диска размер, стандартно 512 байт, и является минимальной одновременно передаваемой порцией данных при обмене с блочным устрой­ством. Логическими или относительными называют секторы в пределах одного логического диска (раздела), они адресуются линейно, т.е. фактически поряд­ковыми номерами или индексами. Нумерация начинается с 1 (в случае MS-DOS). Физические или абсолютные секторы отсчитываются в рамках всего диска, и для них действуют два основных подхода к адресации. Традиционная адресация CHS (Cylinder-Head-Sector) предполагает три компонента идентифи­кации сектора: цилиндр (номер дорожки), головка (поверхность) и номер сек­тора в дорожке. Для современных дисков компоненты CHS-адреса уже не соответствуют их реальной физической конфигурации и автоматически транслируются контроллером, поэтому их правильнее воспринимать как «логические» цилин­дры и поверхности. Поддержка больших объемов дисков для CHS-адресации ограничена разрядностью компонентов адреса: 1024 «цилиндра», 256 «поверхностей», 63 «сектора». Линейная адресация (LBA – Linear Block Addressing) гибче, проще в использовании и более масштабируема в сторону увеличения числа секторов.

Логические секторы в MS-DOS читаются и пишутся прерываниями int 25h и 26h соответственно, при этом передаются параметры: AL – номер устройства; DX – номер первого обрабатываемого сектора; CX – количество секторов; ES:BX – адрес буфера в памяти. Признаком ошибки служит нену­левое значение флага CF. Кроме того, после возврата из прерываний стек всегда остается невыровненным: на его верхушке находится слово с кодом результата, которое необходимо извлечь.

Так как доступ по абсолютным адресам потребуется, скорее всего, только для секторов в начале диска, то достаточно будет традиционных функций BIOS. Сервис BIOS доступа к дискам представлен прерыванием int 13h, имеющим ряд функций, в том числе чтение и запись группы секторов. Код функции всегда передается в AH (02h – чтение, 03h – запись); DL – номер устройства; CH – младшие 8 бит номера цилиндра; DH – номер поверхности; CL – номер начального сектора (биты 5..0) и два старших бита номера цилиндра (биты 7..6); AL – счетчик секторов (не более чем на одной дорожке); ES:BX – адрес буфера в памяти. Признаком ошибки выполнения служит единичное значение флага CF, в этом случае код ошибки возвращается в AH.

Операции над внутренними структурами файловой системы потенци­ально опасны, поэтому рекомендуется ограничиваться, хотя бы на этапе отладки, съемными носителями, не содержащими уникальных данных. При выполнении большинства заданий для данной лабораторной работы потре­буется дискета, отформатированная под FAT. Все задания, если не огово­рено иное, выполняются для корневого каталога этой дискеты. Вместо реаль­ной (физической) дискеты можно использовать виртуальный диск A:, создан­ный, например, программой vfd. Также может использоваться и флэш-накопителях, отформатированный в FAT.

Контрольные вопросы

1. Понятие файловой системы.

2. Структура файловой системы FAT.

3. Разновидности FAT.

4. Загрузочная запись.

5. Организация каталога.

6. Организация FAT-таблицы.

7. Организация покластерного доступа к файлу.

Варианты заданий

2.3.1. С клавиатуры вводится имя файла. Необходимо найти запись для данного файла в корневом каталоге; составить список кластеров, в которых записано содержимое этого файла; покластерно прочитать его. Содержимое файла вы­вести на экран или (по выбору) сохранить в файл result.txt при помощи функций MS-DOS из первой лабораторной работы.

 

2.3.2. При помощи анализа цепочек выяснить, какой из файлов корневого каталога занимает наибольшее число кластеров. Имя этого файла показать на экране.

 

2.3.3. С клавиатуры вводится номер кластера. Необходимо выяснить, какому из файлов выделен данный кластер, и вывести имя этого файла.

 

2.3.4. Восстановление удаленного файла (повышенной сложности).

Файл при удалении его средствами MS-DOS не уничтожается полностью. Соответствующая ему запись в каталоге помечается как «удаленная» (символ E5h в начале имени файла), и все принадлежавшие файлу кластеры помечаются в таблице FAT как свободные. Ссылка на первый кластер и содержимое этих кластеров не затрагивается, поэтому сохраняется теоретическая возможность восстановления файла. Однако успешность восстановления не гарантируется, так как информация о порядке следования кластеров теряется, а сами они могут быть присоединены к другим файлам.

 

Лабораторная работа №3
Работа с памятью

Цели работы:

1) изучить организацию памяти и механизмы ее распределения в DOS;

2) научиться работать с динамической памятью в DOS;

3) научиться создавать сложные динамические структуры.





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 488 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Велико ли, мало ли дело, его надо делать. © Неизвестно
==> читать все изречения...

2522 - | 2181 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.