Версия для печати ↓↓ |
© Grand, 2001–2009
Предисловие
Структура блочного устройства
Идентификационный блок
Сегмент каталога
Приложения
Этот документ кратко описывает всю информацию о логическом формате блочных устройств (другие названия: устройства прямого доступа, файловые устройства справочной структуры и пр.) совместимых между собой дисковых операционных систем RAFOS, ФОДОС, RT-11 и других, диалоговых вычислительных комплексов (ДВК).
Представленный материал был собран автором этого документа из невнятных технических описаний к выше упомянутым операционным системам, а также на основе собственных экспериментальных работ, которые были проделаны при создании программы DVK UTILITY на Sinclair ZX Spectrum-совместимых компьютерах, предназначенной для работы с дисками двойной плотности от ДВК.
Цель этого описания — помощь программистам, которые захотят создать качественныe программы для обработки данных с ДВК на других платформах, а также тем, кому потребуется восстановить информацию на дисках ДВК в случае ее порчи.
Все числа в этом тексте — десятичные.
При подготовке текста и графики использовался Sinclair ZX Spectrum-совместимый компьютер.
В качестве физического носителя блочного устройства могут выступать, например, магнитные и электронные диски, а также файл, размещённый на другом блочном устройстве, которое в свою очередь также может располагаться на одном из вышеперечисленных носителей.
Блочное устройство, как следует из его названия, состоит из блоков постоянной длины — 512 байтов, которыми и происходит обмен данными с ним.
Блоки в устройстве нумеруются начиная с нуля (т.е. имеют логическую нумерацию). Как будет сказано ниже, для указания длин файлов используется по одному 16-и разрядному слову, поэтому общая длина блочного устройства может быть не более 65536 блоков или 32 мегабайта.
Первые шесть блоков в начале блочного устройства (с 0 по 5) зарезервированы. Блоки 0, 2–5 используются для хранения системного загрузчика, если устройство автозагружаемое. Блок 1 является идентификационным.
С блока 6 следуют блоки, зарезервированные под сегменты каталога — по два блока на один сегмент. В сегментах каталога хранятся элементы каталога — заголовки файлов, содержащие служебную информацию о каждом из них. Максимальное число сегментов каталога — 31; оно задаётся при инициализации устройства, и в дальнейшем не может быть изменено.
За сегментами каталогов следуют до конца устройства блоки, предназначенные для хранения данных файлов.
Идентификационный блок имеет логический номер 1; в нем содержится служебная информация о всём блочном устройстве.
Смещение в байтах от начала | Назначение | |
---|---|---|
+0 | 2 | Равны нулю. |
+132 | 56 | Нуль в первом байте указывает, что устройство инициализировано впервые (в этом случае остальные 55 байтов не используются), иначе — область хранит данные старого каталога: 10 байтов заголовка первого сегмента и два первых элемента каталога из него по 14 байтов (для возможности восстановления пока на устройство не было записано новых файлов); оставшиеся байты не используются и равны нулю. |
+448 | 4 | Назначение неизвестно, равны нулю. |
+466 | 6 | Назначение неизвестно, равны: 1, 0, 6, 0, 83, 142. |
+472 | 12 | Имя тома (устройства) в кодировке КОИ7; выдается в строке "Volume ID", при печати каталога. |
+484 | 12 | Имя владельца тома (устройства) в кодировке КОИ7; выдается в строке "Owner", при печати каталога. |
+496 | 12 | Имя инициализировавшей системы в кодировке КОИ7; ОС RT11, например, заносит в эти байты сообщение: "DECRT11A    ". |
Каждый сегмент каталога имеет 10-и байтный заголовок:
Смещение в байтах от начала | Назначение | |
---|---|---|
+0 | 2 | Число сегментов, отведенных под каталог (до 31), заданное при инициализации. Здесь и далее — первый байт младший. |
+2 | 2 | Номер следующего открытого сегмента каталога. В последнем сегменте записан 0; первый имеет номер 1, второй — 2 и т. д. |
+4 | 2 | Счетчик сегментов, имеющих элементы каталога (только в первом сегменте). Об элементах каталога см. ниже. |
+6 | 2 | Число дополнительных байтов в элементе каталога (после инициализации стандартными средствами всегда равно 0). |
+8 | 2 | Номер блока, с которого начинаются файлы в данном сегменте. |
За заголовком сегмента следуют элементы каталога — области постоянной длины, в каждой из которых содержится информация об одном файле, хранящемся на устройстве.
Смещение в байтах от начала | Назначение | |
---|---|---|
+0 | 1 | Всегда равен нулю (не используется). |
+1 | 1 | Отдельные установленные биты этого байта указывают вид файла:
|
+2 | 2 | Первый, второй и третий символы имени файла в кодировке Radix50. |
+4 | 2 | То же для четвертого, пятого и шестого. |
+6 | 2 | То же для первого, второго и третьего символов расширения файла. |
+8 | 2 | Длина файла в блоках. |
+10 | 2 | Специальные байты (не используются для постоянного файла, равны 0). |
+12 | 2 | Дата создания файла (только для постоянного) от
|
+14 | n | Байты дополнительной информации (если есть); системой не обрабатываются. |
В элементах каталога не содержится логический номер блока, с которого начинаются данные файла. Для текущего файла начальный блок определяется суммированием длин предыдущих файлов текущего сегмента и прибавлением их общей длины к номеру блока, с которого начинаются файлы текущего сегмента, присутствующем в его заголовке.
Как известно, перед началом работ с новым блочным устройством, требуется его инициализация, которая происходит следующим образом:
В процессе создания файлов, сегмент каталога может оказаться заполненным элементами каталога. В случае, если имеется возможность открыть новый сегмент (их количество задается при инициализации), операционная система выполняет следующие действия:
При ведении устройства (т. е. при создании новых файлов и удалении старых) на нем могут оказаться множество мелких свободных областей, в любую из которых новый файл не помещается, хотя общего свободного пространства для этого достаточно. Логический формат блочного устройства не позволяет создавать сегментированные файлы (такие, как, например, в операционной системе IS-DOS на Sinclair ZX Spectrum-совместимых компьютерах). Однако, существует операция, называемая "сборкой мусора" (команда монитора — SQUEEZE), которая, последовательно копируя файлы на устройстве, сдвигает их, выделяя тем самым одну максимально свободную область. Устройство может иметь дефектные области, которые указываются файлами с расширением .BAD; они не затрагиваются этой операцией, и остаются на прежних местах.
Контроллер:
КМД.
Метод записи: модифицированная частотная модуляция (двойная плотность).
Запоминающее устройство: накопитель на гибких магнитных дисках.
Носитель: гибкий магнитный диск для двойной плотности записи, диаметром 133 либо 89 мм.
Физический формат диска:
дорожек: 40 или 80;
сторон: одна или две;
всего секторов: 400, 800 или 1600;
секторов на дорожке: 10;
размер сектора: 512 байтов; один сектор на диске соответствует одному логическому блоку данных блочного устройства.
•