double arrow

Операции ввода-вывода на диск

Таблица распределения файлов

Оглавление диска (каталог)

Дисковая память

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

Каждая cторона 3 ½ дюймовой дискеты содержит 80-160 концентрических дорожек, пронумерованных от 00 до 79-159. На каждой дорожке форматируется девять секторов по 512 байтов каждый. На жестком диске вместо термина дорожки используются цилиндры.

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

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

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

А) Запись начальной загрузки (один кластер);

Б) Таблицу распределения файлов (FAT);

В) Каталог;

Г) Файлы данных.

Размеры FATа, каталога зависят от емкости диска. Записи заносятся сначала на 0-ю сторону n-й доpожки, затем на 1-ю сторону n-й дорожки, затем на 0-ю сторону n+1-й дорожки и т.д. Такая особенность заполнения дисковой памяти на противоположных дорожках снижает число перемещений головки дисковода. Данный метод используется как для гибких, так и для твердых дисков.

При использовании утилиты FORMAT/S для форматизации дискеты, модули DOS IBMBIO.COM и IBMDOS.COM записывается в первые сектора области данных.

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

Элементы оглавления имеют следующий формат:

Байт Назначение

0-7 Имя файла, определяемое из программы, создавшей

данный файл. Первый байт может указывать на статус

файла: шест.00 обозначает, что данный файл не

используется, шест.E5 - файл удален, шест. 2E -

элемент подоглавления.

8-10 Тип файла

11 Атрибут файла, определяющий его тип:

шест.00 - обычный файл;

шест.01 - файл можно только читать;

шест.02 - "спрятанный" файл;

шест.04 - системный файл DOS;

шест.08 - метка тома;

шест.10 - подоглавление;

шест.20 - архивный файл (для твердого диска).

12-21 Зарезервировано для DOS.

22-23 Время дня, когда файл был создан или последний раз

изменялся, в следующим двоичном формате:

¦чччччммммммссссс¦

24-25 Дата создания или последнего изменения файла, сжатая

в два слова в следующем двоичном формате:

¦гггггггм¦мммддддд¦

где год начинается с 1980 и может принимать значения

от 0 до 119, месяц - от 1 до 12, а день - от 1 до 31.

26-27 Начальный кластер файла. Относительный номер

последних двух секторов каталога. Первый файл данных

(без COM-модулей DOS) начинается на относительном

кластере 002. Текущая сторона, дорожка и кластер

зависят от емкости диска.

28-31 Размер файла в байтах. При создании файла DOS

вычисляет и записывает размер файла в это поле.

Все поля в каталоге диска, превышающие один байт, записываются в обратной последовательности байтов.

Назначение таблицы распределения файлов (FAT - File Allocation Table) - распределение дискового пространства для файлов. Если вы создаете новый файл или изменяете существующий, то DOS меняет элементы таблицы файлов в соответствии с расположением файла на диске. FAT содержит элементы для каждого кластера, длина элементов FAT зависит от устройства дисковой памяти. Кластер представляет собой один или несколько секторов.

Элементы FAT определяют кластеры. Каждый такой элемент имеет длину 12-16 битов. Два первых элемента FAT, известные как относительные сектора 000 и 001, соответственно, указывают на два последних сектора оглавления, определяя его размер и формат. Первый файл данных начинается на относительном секторе 002. Каждый элемент FAT состоит из трех шестнадцатиричных цифр (для 12-битового FATа), которые указывают на характер использования конкретного сектора:

000 свободный кластер,

nnn относительный номер следующего кластера для файла,

FF7 неиспользуемый кластер (сбойная дорожка),

FFF последний кластер файла.

Предположим, например, что дискета содержит только один файл с именем TEST.ASM, занимающий относительные сектора 002, 003 и 004. Элемент оглавления для этого файла содержит имя файла TEST, тип - ASM, шест.00 для обычного файла, дату создания, 002 - номер первого относительного сектора файла и размер файла в битах. Таблица FAT в этом случае может выглядеть следующим образом (кроме того, что в каждой паре байты в обратной последовательности):

Элемент FAT: ¦FDF¦FFF¦003¦004¦FFF¦000¦000¦...¦000¦

Относительн.сектор: 0 1 2 3 4 5 6 ...конец

Первые два элемента FAT указывают расположение каталога на относительных секторах 000 и 001. Для ввода рассматриваемого файла в память, система выполняет следующие действия:

1. DOS получает доступ к дискете и ищет в каталоге имя

TEST и тип ASM.

2. Затем DOS определяет по каталогу положение первого относительного сектора файла (002) и загружает содержимое этого сектора в буферную область в основной памяти.

3. Номер второго сектора DOS получает из элемента FAT, соответствующего относительному сектору 002. Этот элемент содержит 003. Это обозначает, что файл продолжается в относительном секторе 003. DOS загружает содержимое этого сектора в буфер в основной памяти.

4. Номер третьего сектора DOS получает из элемента FAT, соответствующего относительному сектору 003. Этот элемент содержит 004, значит файл продолжается в относительном секторе 004. DOS загружает содержимое этого сектора в буфер в основной памяти.

5. Элемент FAT для относительного сектора 004 содержит FFF, что свидетельствует о том, что больше нет данных для этого файла.

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

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

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

Метод доступа к дисковой памяти, поддерживающий использование оглавления, "блокирование" и "разблокирование" записей, обеспечивается прерыванием DOS 21H. Более низкий уровень, обеспечивающий абсолютную адресацию дисковых секторов, также через DOS, выполняется посредством прерываний 25H и 26H. Самый низкий уровень обеспечивается прерыванием BIOS 13H, которое позволяет выполнить произвольную адресацию в дисковой памяти по номеру дорожки и сектора. Методы DOS осуществляют некоторую предварительную обработку до передачи управления в BIOS.


Сейчас читают про: