←←На ГЛАВНУЮ Получить офф-лайн-версию

© Grand, 2001, 2003, 2006


ОПИСАНИЕ ЛОГИЧЕСКОГО ФОРМАТА БЛОЧНЫХ УСТРОЙСТВ ДИСКОВЫХ ОПЕРАЦИОННЫХ СИСТЕМ ДИАЛОГОВЫХ ВЫЧИСЛИТЕЛЬНЫХ КОМПЛЕКСОВ






СОДЕРЖАНИЕ

Предисловие
Формат блочного устройства
Идентификационный блок
Заголовок сегмента каталога
Элемент каталога
Приложения






ПРЕДИСЛОВИЕ

    Этот документ кратко описывает всю информацию о логическом формате блочных устройств (другие названия: устройства прямого доступа, файловые устройства справочной структуры и пр.) совместимых между собой дисковых операционных систем RAFOS, ФОДОС, RT11 и других, в диалоговых вычислительных комплексах (ДВК).
    Представленный материал был собран автором этого документа из невнятных технических описаний к выше упомянутым операционным системам, а также на основе собственных экспериментальных работ, которые были проделаны при создании программы DVK UTILITY на Sinclair ZX Spectrum-совместимых компьютерах, предназначенной для работы с дисками двойной плотности от ДВК.
    Цель этого описания — помощь программистам, которые захотят создать качественныe программы для обработки данных с ДВК на других платформах, а также тем, кому придется восстанавливать информацию на дисках ДВК в случае ее порчи.

Все числа в этом тексте — десятичные.

При подготовке текста и графики использовался Sinclair ZX Spectrum-совместимый компьютер.





ЛОГИЧЕСКИЙ ФОРМАТ БЛОЧНОГО УСТРОЙСТВА

Схема логического формата





ИДЕНТИФИКАЦИОННЫЙ БЛОК

Таблица 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    ".




ЗАГОЛОВОК СЕГМЕНТА КАТАЛОГА

Таблица 2. Функциональное назначение байтов заголовка сегмента каталога
Смещение в байтах от начала Кол-во байтов Назначение
+0 2 Число сегментов, отведенных под каталог (до 31), заданное при инициализации. Здесь и далее — первый байт младший.
+2 2 Номер следующего открытого сегмента каталога. В последнем сегменте записан 0; первый имеет номер 1, второй — 2 и т. д.
+4 2 Счетчик сегментов, имеющих элементы каталога (только в первом сегменте). Об элементах каталога см. ниже.
+6 2 Число дополнительных байтов в элементе каталога (после инициализации стандартными средствами всегда равно 0).
+8 2 Номер блока, с которого начинаются файлы в данном сегменте.

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




ЭЛЕМЕНТ КАТАЛОГА

Таблица 3. Функциональное назначение байтов элемента каталога
Смещение в байтах от начала Кол-во байтов Назначение
+0 1 Всегда равен нулю (не используется).
+1 1 Отдельные установленные биты этого байта указывают вид файла:
  • b0 - временный (не закрытый) файл (приравнивается к пустому);
  • b1 - пустой (свободная область);
  • b2 - постоянный;
  • b3 - конец данных в сегменте каталога;
  • b7 - защита от удаления (для постоянного файла).
+2 2 Первый, второй и третий символы имени файла в кодировке Radix50.
+4 2 То же для четвертого, пятого и шестого.
+6 2 То же для первого, второго и третьего символов расширения файла.
+8 2 Длина файла в блоках.
+10 2 Специальные байты (не используются для постоянного файла, равны 0).
+12 2 Дата создания файла (только для постоянного) от 01-Jan-72 до 31-Dec-99 (т. е. на сегодняшний день не актуально); два байта составляют слово (первый байт младший), отдельные биты которого обозначают:
  • b0...b4 - код года, к нему прибавляется 72, результат - число соответствующее двум последним цифрам года прошлого века;
  • b5...b9 - день месяца;
  • b10...b14 - номер месяца.
Если все биты равны 0, то это указывает на отсутствие даты.
+14 n Байты дополнительной информации (если есть); системой не обрабатываются.




ПРИЛОЖЕНИЯ


  1. Инициализация блочного устройства

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

    1. Проверяется каталог устройства; если оно ранее использовалось и содержит защищенные файлы, у пользователя запрашивается разрешение для дальнейших действий.
    2. Нулевой блок устройства заполняется нулями, и в него записывается программа выдачи сообщения об отсутствии системного загрузчика.
    3. В первый блок устройства записываются данные согласно таблицы 1.
    4. В 6-м блоке устройства создаются: заголовок первого сегмента каталога; элемент каталога, указывающий о всей длине свободной области на устройстве (пустой файл); и маркер конца каталога.


  2. Создание нового сегмента каталога

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

    1. Заполняется заголовок нового сегмента и в него переписывается примерно половина последних элементов каталога из заполненного сегмента.
    2. Корректируются связи сегментов (таким образом, сегменты могут быть связаны не по порядку своих номеров).
    3. Укороченный и новый сегменты записываются на устройство.
    4. Новый элемент каталога будет помещен в тот сегмент, в котором окажется информация о подходящей свободной области для файла.


  3. "Сборка мусора"

        При ведении устройства (т. е. при создании новых файлов и удалении старых) на нем могут оказаться множество мелких свободных областей, в любую из которых новый файл не помещается, хотя общего свободного пространства для этого достаточно. Логический формат блочного устройства не позволяет создавать сегментированные файлы (такие, как например, в операционной системе IS-DOS на Sinclair ZX Spectrum-совместимых компьютерах). Однако, существует операция, называемая "сборкой мусора" (команда монитора — SQUEEZE), которая, последовательно копируя файлы на устройстве, сдвигает их, выделяя тем самым одну максимально свободную область. Устройство может иметь сбойные области, которые указываются файлами с расширением .BAD; они не затрагиваются этой операцией, и остаются на прежних местах.


  4. Блочное устройство MY:

        Контроллер: КМД.
        Метод записи: модифицированная частотная модуляция (двойная плотность).
        Запоминающее устройство: накопитель на гибких магнитных дисках.
        Носитель: гибкий магнитный диск для двойной плотности записи, диаметром 133 либо 89 мм.
        Физический формат диска:
            дорожек: 40 или 80;
            сторон: одна или две;
            всего секторов: 400, 800 или 1600;
            секторов на дорожке: 10;
            размер сектора: 512 байтов; один сектор на диске соответствует одному логическому блоку данных блочного устройства.


Получить офф-лайн-версию