Advanced Disc Filing System ( ADFS ) — это вычислительная файловая система, уникальная для линейки компьютеров Acorn и преемников на базе ОС RISC . Первоначально основанная на редкой файловой системе Acorn Winchester, она была переименована в Advanced Disc Filing System, когда была добавлена поддержка гибких дисков (с использованием контроллера гибких дисков WD1770 ), а в более поздних 32-битных системах - вариант контроллера гибких дисков в стиле ПК. . [2]
Первоначальная система хранения дисков Acorn была ограничена 31 файлом на поверхность диска, 7 символами на имя файла и одним символом для имен каталогов - формат, унаследованный от более ранних компьютеров Atom и System 3–5 Eurocard . Чтобы преодолеть некоторые из этих ограничений, Acorn разработала ADFS. Самым драматичным изменением стало введение иерархической структуры каталогов. Длина имени файла увеличилась с 7 до 10 букв, а количество файлов в каталоге увеличилось до 47. Он сохранил некоторые поверхностные атрибуты DFS; разделителем каталогов по-прежнему была точка, которая $
теперь обозначала иерархический корень файловой системы. ^
использовался для ссылки на родительский каталог, @
текущий каталог и \
был ранее посещенным каталогом.
BBC Master Compact содержал ADFS версии 2.0, которая обеспечивала добавление команд форматирования, проверки и резервного копирования в ПЗУ, но не поддерживала жесткие диски. [3]
Для ADFS в 8-битных системах требовался контроллер гибких дисков WD1770 или более поздней версии серии 1772 из-за неспособности исходного чипа Intel 8271 справляться с требуемым ADFS форматом двойной плотности. Однако ADFS можно использовать для поддержки жестких дисков без контроллера 1770; При разработке основной целью было использование жестких дисков, расширение для работы с дискетами появилось позже. [ нужна ссылка ] Контроллер гибких дисков 1770 был непосредственно включен в конструкцию моделей Master Series и B+, [4] и был доступен в качестве платы обновления для более ранней модели B. [5] [6] ADFS можно было добавить к модели. Системы B и B+ с дополнительной модернизацией. [7]
Acorn Plus 3 , официальное дисковое расширение Acorn для Acorn Electron, в стандартной комплектации поставлялся с ADFS, но эта реализация содержала различные заметные ошибки. Файл с именем ZYSYSHELP был «требован системой» и создан во время форматирования. [8] : 7 Это был кладж. Первоначальная реализация ADFS от Acorn на Electron была ненадежной при записи на первые несколько дорожек дискеты, поэтому это было «исправлением» и просто включало запись файла, полного мусора, на подозрительную часть. Тогда ADFS пропустит это. [ нужна цитата ] Повреждение диска также может произойти при попытке использовать *COMPACTкоманду без отключения мигающего текстового курсора. [9] [примечание 1] Хьюго Тайсон, главный разработчик ADFS, напоминает, что эта ошибка была обнаружена во время позднего тестирования, но не исправлена в первоначальной версии ПЗУ, чтобы избежать поздних изменений, поскольку существуют обходные пути.
На Электроне форматирование диска производилось через команду вместо штатных команд / DFS. Кроме того, обратите внимание, что эта команда отличается от эквивалентной команды для ADFS 1770 на микрокомпьютере BBC. Возможно, это связано с необходимостью создания файла ZYSYSHELP на Electron. Команда присутствовала только на приветственном диске, поставляемом с Plus3, и не была включена в ПЗУ. [8] : 48 *EFORM*FORM40*FORM80*EFORM*AFORM*EFORM
ADFS поддерживала жесткие диски, а также дискеты размером 5¼ и 3½ дюйма, отформатированные емкостью до 640 КБ с использованием кодирования MFM двойной плотности ( формат L ; односторонние диски поддерживались в формате S (160 КБ) и формате M (320 КБ)) . ADFS, реализованная в микрокомпьютерной системе BBC (а позже и в ОС RISC), никогда не поддерживала дискеты одинарной плотности.
Для поддержки жестких дисков в ADFS использовался тот же формат, что и для дискет формата L , в виде блоков по 256 байт; [10] только базовое расположение дорожек и секторов различалось в зависимости от фактического используемого диска, но этим управлял контроллер SCSI . Он взаимодействовал с устройством Winchester на базе ST506/ST412 через шину BBC Micro 1 МГц, интерфейсную карту, разработанную Acorn (адаптер шины 1 МГц — SCSI) и готовый контроллер Adaptec SCSI (адаптер SCSI — ST-506). ).
Поддержка накопителей в стиле IDE / ATAPI была добавлена «неофициально» третьими сторонами в последние годы. [11]
Формат файла ADFS использовал байты ASCII Хьюго для разделения имен каталогов на диске, названном в честь автора ADFS Хьюго Тайсона.
В 32-битных системах WD 1770 или 1772 изначально использовался в качестве контроллера гибких дисков на первых машинах этой линейки. В более поздних моделях использовался контроллер с несколькими вводами-выводами в стиле ПК, что потребовало небольших изменений в ADFS. В дополнение к устаревшей поддержке формата типа «L», Arthur и более поздняя ОС RISC предоставили расширенные форматы, которые преодолевают ограничения BBC Micro.
Артур добавил формат D с 77 записями в каталоге вместо прежних 47, который также можно использовать на жестких дисках, и новый формат дискет двойной плотности емкостью 800 КБ. Атрибут «тип» для каждого файла был добавлен в пространство, которое ранее использовалось для хранения адресов загрузки и выполнения. 12 бит информации о типе используются для обозначения содержимого или предполагаемого использования файла и обычно представлены в виде трех шестнадцатеричных цифр. Это похоже на атрибуты 32-битного типа, хранящиеся в файловой системе Apple HFS , и концептуально сравнимо с более общим использованием типов MIME операционной системой Be ( BeOS) или магическими числами в системах Unix (хотя последние хранятся как часть файла, а не метаданные).
ОС RISC представлена в форматах E и F для дисков двойной плотности и дисков/жестких дисков высокой плотности соответственно. Эти форматы поддерживают фрагментацию файлов (с так называемой «новой картой»), хранение нескольких файлов на фрагмент и хранение небольших файлов в таблицах каталогов. Стратегия выделения оптимизирована для минимизации фрагментации и иногда выполняет дефрагментацию как часть операции хранения файлов. [1] В RISC OS 4 добавлен формат E+/F+ , который позволял использовать длинные имена файлов и более 77 файлов в каталоге. [ нужна цитация ] Более поздние версии ОС RISC, в том числе для Iyonix , продолжают предоставлять ADFS и дополнительно расширяют ее для работы с жесткими дисками большего размера.
В отличие от 8-битной реализации, ADFS, реализованная в ОС RISC, не является монолитной. Системный модуль под названием «ADFS» предоставляет не более чем блочный драйвер и пользовательские интерфейсы, при этом модуль «FileCore» содержит фактическую реализацию файловой системы, а FileSwitch содержит реализации VFS и API высокого уровня доступа к файлам. Это позволяет другому оборудованию легко использовать формат ADFS, например IDEFS (обычно используется для дополнительных карт IDE), SCSIFS и AppFS с поддержкой сети. Функции FileCore и FileSwitch в некотором смысле аналогичны функциям системных менеджеров IFS и IO в Windows NT. Эта гибкость позволила относительно легко внедрить в ОС RISC другие файловые системы.
Ядро Linux поддерживает ADFS для формата E и более поздних версий.
NetBSD имеет поддержку файлового ядра [12] начиная с NetBSD 1.4.
Такие инструменты, как Omniflop (в Windows 2000 и более поздних версиях) и поддержка Libdsk, позволяют читать «физическую» структуру дискет ADFS на компьютерных системах, использующих внутренний диск. Однако логическая структура остается нереализованной.