Введение
Компьютерная файловая система
Дисковая файловая система (DFS) — компьютерная файловая система, разработанная компанией Acorn Computers, первоначально как дополнение к Acorn System 2, основанной на Eurocard. В 1981 году министерства образования Западной Австралии и Южной Австралии объявили совместный тендер на поставку персональных компьютеров для школ. Австралийский дистрибьютор Acorn, Barson Computers, убедил совместных управляющих директоров Германна Хаузера и Криса Карри разрешить предлагать вскоре выпускаемый Acorn BBC Microcomputer в комплекте с дисковым хранилищем. Они согласились при условии, что Barson адаптирует Acorn DFS из System 2 без помощи Acorn, поскольку у них не было доступных ресурсов. Это потребовало внесения некоторых незначительных изменений в аппаратное и программное обеспечение для обеспечения совместимости DFS с BBC Micro. Barson выиграл тендеры в обоих штатах, с установленной DFS, на год раньше, чем в Великобритании. Именно эта ранняя инициатива привела к тому, что BBC Micro получил более широкое распространение на образовательном рынке Австралии, с очень небольшим проникновением на рынок домашних компьютеров до появления Acorn Electron. DFS поставлялся в виде ПЗУ и чипа дискового контроллера, установленных на материнской плате BBC Micro. Файловая система обладала крайне ограниченной функциональностью и объемом хранения, используя плоскую структуру каталогов. Длина каждого имени файла может составлять до семи символов, плюс один символ для каталога, в котором хранится файл. DFS примечателен тем, что, в отличие от большинства файловых систем, не имел единого поставщика или реализации. Оригинальный DFS был написан Acorn, который продолжал поддерживать свою собственную кодовую базу, но различные производители дисководов разрабатывали собственные реализации. Компании, создавшие собственные реализации DFS, включали Cumana, Solidisk, Opus и Watford Electronics. Реализация Watford Electronics примечательна тем, что поддерживала 62 файла на диске вместо обычных 31, используя нестандартный формат диска. Кроме того, реализация Solidisk представила проприетарные "связанные" каталоги, которые позволяли хранить неограниченное количество файлов на диске (ограниченное только размером диска). Другие функции в сторонних реализациях включали возможность просмотра свободного места, а также встроенные команды FORMAT и VERIFY, которые поставлялись на диске утилит вместе с оригинальным Acorn DFS. Acorn продолжил оригинальную серию DFS с Acorn 1770 DFS, которая использовала тот же формат диска, что и предыдущая версия, но добавила набор дополнительных команд и поддерживала улучшенный чип контроллера дискеты WD1770.
Физический формат
DFS обычно использует одну сторону 5¼" дискеты двойной плотности. Диски форматируются как 40 или 80 дорожек, что обеспечивает емкость 100 или 200 КБ на сторону (десять 256-байтных секторов на дорожку, с FM-кодированием). Емкость ограничена выбором контроллера Intel 8271 в оригинальном BBC Micro, который поддерживает только FM-кодирование, а не MFM-кодирование, которое уже широко использовалось к моменту выпуска BBC Micro. FM-кодирование обеспечивает вдвое меньшую емкость записи по сравнению с MFM при заданной физической плотности диска. FM- и MFM-кодирование обычно называют "одинарной плотностью" и "двойной плотностью" соответственно, хотя сами диски и дисководы одинаковы, в отличие от "высокой плотности", для которой используются другие диски и дисководы. 3½" диски двойной плотности могут быть отформатированы и использованы с 1770 DFS (DFS на базе Intel 8271 испытывает проблемы со многими 3½" дисководами), обеспечивая ту же емкость "одинарной плотности" при FM-кодировании, но это изначально не было стандартной практикой. 3½" диски обычно форматировались как MFM "двойной плотности" с использованием более поздней системы Advanced Disc Filing System, поскольку она присутствует во всех машинах Acorn, поставляемых с 3½" дисководами. По состоянию на 2009 год 3½" дисководы стали использоваться с BBC Micro чаще, чем раньше, в том числе и с DFS, благодаря их большей доступности и простоте обмена данными с более современными компьютерами. Диски высокой плотности 5¼" и 3½" не поддерживаются DFS.
Односторонняя и двусторонняя работа
DFS не поддерживает напрямую двусторонние диски; вместо этого две головки двустороннего привода рассматриваются как два отдельных логических диска. DFS может поддерживать до четырех томов, пронумерованных от 0 до 3. Диск 0 является диском по умолчанию, а диск 1 представляет собой второй диск, подключенный к кабелю. "Диск" 2 обозначал обратную сторону диска 0, а "диск" 3 – обратную сторону диска 1. Поддержка более двух физических дисков отсутствует. В связи с широким распространением односторонних дисков, коммерческое программное обеспечение обычно распространялось на односторонних дисках или в виде "переворачиваемых дисков", которые вручную переворачивались для доступа к другой стороне.
Дисковая структура
Каталог (таблица файлов) занимает первые два сектора диска: один для имен и каталогов каждого файла, а второй – для хранения расположения файлов, их размеров и метаданных. На каждый файл выделяется по восемь байт в каждом секторе. Кроме того, восемь байт каждого сектора зарезервированы для 12-байтового заголовка диска и информации об объеме, что ограничивает общее количество файлов на диске (независимо от каталога, в котором они находятся) числом 31. Для экономии места наиболее значащий бит символа каталога файла используется как флаг защиты от записи (только для чтения).
Объем
Хотя физические диски обычно форматируются как 100 КБ или 200 КБ, DFS поддерживает размеры томов до 256 КБ. Максимальный допустимый размер файла DFS составляет размер тома минус ½ КБ на каталог, так как размеры файлов хранятся в виде 18-битного значения.
Распределение файлов
DFS не поддерживает фрагментацию данных, то есть данные файла должны храниться непрерывной последовательностью секторов, однако свободное пространство склонно к фрагментации. Операции произвольной записи в файл завершаются неудачей, когда конец файла достигает начала следующего сектора, даже если на диске есть свободные секторы в других местах. В таких случаях DFS прерывается с ошибкой "Невозможно расширить". Команда SAVE также не может разбить файл, чтобы он поместился в доступное пространство, но поскольку ошибка возникает на этапе выделения секторов, возвращается ошибка "Диск заполнен". Команда *COMPACT предназначена для перемещения всех файлов на диске в единый блок, размещая все свободное пространство после него во втором блоке. Это позволяет следующему созданному файлу заполнить диск, но расширить без перемещения можно только последний существующий файл. Команда SAVE удаляет существующий файл и копирует указанный блок памяти в любое доступное место на диске. В отличие от этого, команда *COMPACT использует память программы в качестве буфера для перемещения файлов, перезаписывая любые программы и данные, находящиеся в памяти.
Метаданные
Как и система хранения на кассетах, Acorn DFS поддерживает стандартные метаданные файлов BBC Micro: адрес загрузки и адрес выполнения, необходимые, поскольку Acorn MOS (операционная система, используемая BBC Micro) не поддерживает перемещение бинарного кода. Файл должен загружаться по адресу, указанному программистом, так как содержимое может содержать ссылки на внутренние области памяти по абсолютным адресам. Адрес выполнения также сохраняется, поскольку точка входа не обязательно находится в начале файла или даже внутри него. Атрибуты файла ограничены одним битом: Защищен. Если этот бит установлен, справа от имени файла в каталоге отображается буква L, и файл нельзя изменить, перезаписать или удалить.
Даты
Диски DFS не отслеживают даты (поскольку Acorn MOS до версии 3 не имел часов реального времени), но вместо этого предлагают необычную функцию: счетчик изменений. Каждый раз при обновлении каталога счетчик увеличивается на единицу. Этот счетчик отображается в скобках после названия в первой строке каталога диска, например, число 12 в приведенном выше примере каталога.
Другие особенности
DFS также поддерживает возможность запуска дискового программного обеспечения на основе последовательности клавиш. Если клавиша Shift удерживается во время мягкой или жесткой перезагрузки, DFS проверяет диск 0 на наличие диска с установленным флагом загрузки. Флаг загрузки может быть 0 (игнорировать), 1 (загрузить файл), 2 (запустить файл машинного кода) или 3 (выполнить скрипт). Если флаг загрузки установлен, ищется файл $.!BOOT, который загружается в память (1), загружается и выполняется как машинный код (2) или передается в буфер клавиатуры (3). Вариант 3 обрабатывает файлы "EXEC" – текстовые макрофайлы, используемые как примитивные скрипты командной оболочки. Это не полноценные скрипты командной оболочки, а просто последовательность клавиш для ввода, подобная записи для воспроизведения. Следовательно, они не могут выполнять циклы или переходы, если не передают соответствующий код в интерпретатор BASIC. Помимо использования во время перезагрузки, их можно выполнить в любое время с помощью команды *EXEC операционной системы. Файлы EXEC не зависят от файловой системы.
Альтернативы
Существовала модификация DFS, называемая DNFS, или Disc/Network Filing System, которая объединяла в одном ROM Econet Network Filing System (NFS), стандартную систему файлового обеспечения дисков и программное обеспечение поддержки сопроцессоров Tube; этот ROM одновременно устанавливал в операционную систему две файловые системы. Изначальная конструкция DFS базировалась на контроллере дисководов Intel Corporation FDC 8271, непосредственном предшественнике конструкции 8272, использованной в IBM Personal Computer. Контроллер 8271 обладал ограниченной функциональностью и устарел, а более поздние версии файловой системы от различных производителей, включая Solidisk, Acorn и Watford Electronics, были основаны на более современных контроллерах дисководов WD1770 и WD1772. Контроллер 1770 быстро стал стандартным для всей линейки Acorn после появления ADFS. DFS была вытеснена системой Advanced Disc Filing System (ADFS), которая имела полностью иерархическую структуру и подходила для работы с жесткими дисками на BBC Micro. ADFS была файловой системой по умолчанию на BBC Master, однако большинство пользователей, вероятно, возвращались к DFS из соображений совместимости, поскольку ADFS не могла читать диски, отформатированные в DFS. ADFS также была выбрана в качестве стандартной файловой системы для RISC OS.