DLLpiton.net.ru
Главная arrow Материалы arrow Спецификация Joliet 9660
Главная
Форум
Магазин
- - - - - - -
Исходники
Статьи
Материалы
FTP
- - - - - - -
Поиск
Каталог ссылок
Контакты
Ленты новостей
Ча.Во. (FAQ)
Анекдоты
Java программы
Доска заказов программ
Лицензия Dllpiton
Кто на сайте?
 
Спецификация Joliet 9660 Печать E-mail
Joliet Specification

Joliet спецификация

для записи CD-ROM ISO 9660:1988

Внедрение Unicode; версия 1; 22 май 1995

Авторское право 1995, Microsoft Corporation Все права защищены законом
Контакты через Microsoft Developer Relations Group
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script

СОДЕРЖАНИЕ

Пролог

Назначение

Хотя CD-ROM носители очень эффективны для распространения цифровой информации, но существующий файловый формат ISO 9660 содержит ряд ограничений, которые затрудняют простое и эффективное использование CD-ROM.

Натура CD-ROM носителей "только чтение" приводит авторов изданий к решению продолжать использовать традиционные магнитные носители как основной способ выпуска своих произведений. Каждый из существующих файловых форматов для магнитных носителей содержит различные особенности, которые не могут быть отображены на CD-ROM носителе при использовании немодифицированной версии ISO 9660.

Когда авторы изданий пробуют перенести свои произведения на CD-ROM, они часто обнаруживают, что часть их работы не может быть перенесена на CD-ROM носитель из-за ограничений формата ISO 9660. Это разочаровывает некоторых авторов.

Поскольку CD-ROM носители используются преимущественно для распространения информации, а не её дизайна (чтение/запись), то необходимо, чтобы формат CD-ROM поддерживал множество особенностей уже созданных произведений. Этот фундаментальный недостаток в дизайне ISO 9660 вынуждает некоторых производителей операционных систем расширять ISO 9660 разными способами. Несколько примеров: Rock Ridge Interchange протокол и использование фирмой Apple области System Use Area для хранения флажков поиска.

Краткий список проблем ISO 9660, которые решает данная спецификация:

  • Ограничения кодировки символов

  • Ограничения длины имени файла

  • Ограничения количества уровней вложенности директорий

  • Ограничения формата имени директории

  • Несовместимость с "широкими" (16-бит) символами

Основная цель всех нововведений Joliet спецификации - это уменьшить ограничения и обеспечить совместимость с ISO 9660:1988 спецификацией, чтобы достигнуть требуемой практичности.

Обзор

 Joliet спецификация использует supplementary volume descriptor (SVD) в ISO 9660 для указания списка файлов, записанных с кодировкой Unicode.

Использование ISO 10646 кодировки символов идентифицируется по ISO 2022 escape-последовательности. Запись escape-последовательности в ISO 9660 SVD служит для идентификации Unicode SVD, и соответствует правилам ISO 9660 спецификации. Это так же поддерживает взаимозаменяемость, не изменяя файловую структуру, которую описывает primary volume descriptor (PVD).

Все что остаётся - это решить маленькую техническую проблему с ISO 9660, которая возникает от применения "широких" символов.

Поскольку использования данной escape-последовательности в ISO 9660 SVD до настоящего времени не имелось, то некоторые ограничения, налагаемые ISO 9660, могут быть уменьшены практически без нарушения обмена информацией между существующими системами.

Предлагаемые нововведения имеют несколько замечательных качеств. К примеру, с использованием существующего ISO 9660 стандарта возможна прямая интеграция с существующими расширениями ISO 9660. Расширения System Use Sharing Protocol, Rock Ridge extensions for POSIX semantics, CD-XA System Use Area Semantics, Apple's Finder Flags и Resource Forks, все они могут быть прямо портированы в Joliet спецификацию.

Так же, использование нового SVD исключает опасность нарушения программной совместимости с существующими драйверами ISO 9660. Существующие драйвера будут просто игнорировать Unicode SVD, и использовать PVD как обычно. Эта совместимость в качестве "предохранительного клапана" облегчает задачу по уменьшению ограничений файловой системы.

Этот документ описывает, как можно сконструировать CD-ROM так, чтобы имена в томе могли быть записаны в Unicode, при этом оставаясь в рамках ISO 9660. В частности, из ISO 10646 кодировки символов используются UCS-2 Level 1, UCS-2 Level 2 и UCS-2 Level 3.

Основной метод распознавания томов CD-ROM это Volume Recognition Sequence, последовательность дескрипторов томов, записанных один на сектор, начиная с сектора 16 в первом цилиндре последней сессии диска. Принимающая система читает эти сектора и выбирает нужный дескриптор тома из списка. Этот дескриптор тома играет роль якоря, над которым по цепочке конструируется остальная часть тома.

Терминология и нотация

Joliet основан на стандарте ISO 9660:1988. Везде, где не указано иное, терминология относится к ISO 9660:1988.

В документе используется следующая нотация.

  • Десятичная и шестнадцатеричная нотация

    • Номера в десятичной нотации представлены десятичными цифрами от 0 до 9.

    • Номера в шестнадцатеричной нотации представлены шестнадцатеричными цифрами от 0 to 9 и от A до F, заключёнными в скобках. К примеру, шестнадцатеричное число D0 будет написано как (D0).

  • Буквенные последовательности ASCII символов будут представлены этими же символами в одинарных кавычках. К примеру, 'ABC' означает последовательность байт (41)(42)(43).

  • Отдельные символы ISO 2022 escape-последовательности будут даны в формате перечисленных через запятую нибл/нибл, в шестнадцатеричном формате, и как ASCII символы, со знаком эквивалентности между каждым форматом, заключённые в общих скобках. К примеру, 3-байтная ISO 2022 escape-последовательность для Shift-JIS является (2/4, 2/11, 3/10 = (24)(2B)(3A)= '$+:').

переход к заголовку

Спецификация формата Joliet

Свод изменений

Joliet спецификация даёт такое решение совместимости ISO 9660 с UCS-2 томами:

  • Использовать SVD с UCS-2 (UNICODE) Escape-последовательностью.

  • Используемая UCS-2 escape-последовательность: (25)(2F)(40), (25)(2F)(43) или (25)(2F)(45).

  • Бит 0 в поле SVD "Volume Flags Field" по-умолчанию НОЛЬ.

  • Unicode "широкие" символы должны быть записаня в формате "Big Endian" (Motorola).

  • Специальные идентификаторы директорий записывать как однобайтные имена, имеющие значение (00) или (01).

  • SEPARATOR 1 и SEPARATOR 2 кодировать эквивалентным 16-битным значением.

  • Правила сортировки не изменены, за исключением выравнивающих байтов, которые должны быть установлены в (00).

Joliet спецификация рекомендует сдвинуть ограничения ISO 9660 на UCS-2 томах. Joliet спецификация разрешает использовать следующие правила обмена информацией:

  • Имена файлов и директорий могут быть длинной до 128 байт (64 unicode символов).

  • Имена директорий могут содержать расширения как у файлов.

  • Иерархия директорий может быть глубже чем 8 уровней.

  • Последовательность дескрипторов тома поддерживает многосессионность. Это совместимо со спецификацией CD-Bridge.

Joliet спецификация может быть расширена использованием следующих спецификаций:

  • Mode 2 Form 2 секторы и CD-DA секторы, ("System Description CD-ROM XA")

  • System Use Sharing Protocol (здесь не описан)

  • RockRidge Interchange Protocol (здесь не описан)

  • Другие файловые форматы CD-ROM в будущем

переход к заголовку

Идентификация Unicode (UCS-2) в ISO 9660 SVD

Поле SVD Escape-последовательность

Поле Escape-последовательность в ISO 9660 Supplementary Volume Descriptor (ISO 9660 секция 8.5.6) будет идентифицировать используемый вид кодировки символов, которая используется в дескрипторах иерархии директорий, относящихся к этому Volume Descriptor.

Если поле Escape-последовательность в ISO 9660 SVD содержит одну из следующих UCS-2 escape-последовательностей, значит дескрипторы иерархии директорий, относящиеся к этому Volume Descriptor, должны интерпретироваться в соответствии с кодировкой UCS-2.


Таблица 1 - ISO 2022 UCS-2 Escape-последовательности

ISO 2022 Escape-последовательность записанная в ISO 9660 SVD

Стандарт  Уровень    Десятичные        Шестнадцатеричные  ASCII
UCS-2     Level 1    2/5, 2/15, 4/0    (25)(2F)(40)       '%\@'          
UCS-2     Level 2    2/5, 2/15, 4/3    (25)(2F)(43)       '%\C'          
UCS-2     Level 3    2/5, 2/15, 4/5    (25)(2F)(45)       '%\E'          

"Том Unicode" состоит из Volume Descriptor, с иерархией директорий соответствующей Supplementary Volume Descriptor, который содержит поле Escape-последовательность, идентифицируемый по одной из кодировке символов UCS-2 выше.

Поле SVD Volume Flags

UCS-2 Level 1, UCS Level 2, и UCS-2 Level 3 escape-последовательности специально записаны в соответствии с ISO 2735 в целях установки бита 0 в поле Volume Flags в SVD.

Нормальное значение бита 0 в поле Volume Flags для Unicode SVD должно быть НОЛЬ.

Решение совместимости ISO 9660 с "широкими" символами

Эта спецификация решает проблему совместимости ISO 9660 с "широкими" (16-бит) кодировками символов, такой как UCS-2.

Порядок байт в "широких" символах

Все UCS-2 символы должны записываться в соответствии с ISO 9660:1988 секция 7.2.2, 16-битные числовые значения - старший значащий байт первый ("Big Endian").

Список разрешённых символов

Все UCS-2 коды разрешены, за исключением следующих:

  • Все коды между (0000) и (001F) включительно. (управляющие символы)

  • (002A) '*'(Asterisk)

  • (002F) '/' (Forward Slash)

  • (003A) ':' (Colon)

  • (003B) ';' (Semicolon)

  • (003F) '?' (Question Mark)

  • (005C) '\' (Backslash)

переход к заголовку

Специальные значения-идентификаторы директорий

Секция 7.6 в ISO 9660 определяет запись специальных идентификаторов в имени корневой, текущей и родительской директории как одиночный байт (00) или одиночный байт (01).

В широко-символьной кодировке невозможно представить символ как одиночный байт. Следующие части ISO 9660:1988 спецификации, ссылающиеся на идентификаторы директорий, вызывают несовместимость.

Обсуждаемая проблема относится к следующим ISO 9660:1988 секциям:

  • 6.8.2.2 Идентификаторы директорий

  • 7.6.2 Специальные идентификаторы директорий

  • 9.1.11 Имя файла

  • 9.4.5 Имя директории

Специальные идентификаторы директорий не предназначены для представления символов в графическом начертании. Это просто маркеры, а не символы. Поэтому, эти значения остаются неизменными на томах, записанных в Unicode.

Просто решаем, что специальные идентификаторы директорий остаются как 8-битные значения даже на UCS-2 томах, где другие символы расширены до 16 бит.

Корневая директория
Идентификатор директории в поле Directory Record обозначающий корневую директорию, остаётся одним байтом (00).
Текущая директория
Идентификатор директории в первой записи Directory Record каждой директории остаётся одним байтом (00).
Родительская директория
Идентификатор директории во второй записи Directory Record каждой директории остаётся одним байтом (01).

Разделительные символы

Символы-разделители SEPARATOR 1 и SEPARATOR 2 определены как 8-битные символы, которые не могут быть представлены в широко-символьной кодировке, поэтому ISO 9660:1988 спецификация в секциях определяющих SEPARATOR 1 и SEPARATOR 2 вызывает несовместимость.

К данной теме относятся следующие ISO 9660:1988 секции:

  • 7.4.3 Разделители

  • 7.5.1 Формат имени файла

  • 7.5.2 Длина имени файла

  • 8.4.24 Абстрактный идентификатор файла

  • 8.4.25 Библиографический идентификатор файла

  • 8.5.17 Правообладательный идентификатор файла

  • 8.5.19 Библиографический идентификатор файла

  • 9.1.11 Имя файла

Значения SEPARATOR 1 и SEPARATOR 2 представляются по разному, в зависимости от d1 кодировки символов.

В случаях, где SVD определяет UCS-2 кодировку символов, значения SEPARATOR 1 и SEPARATOR 2 записываются как UCS-2 символы с эквивалентным значением кода.

Иначе, значения SEPARATOR 1 и SEPARATOR 2 записываются в соответствии с секцией 7.4.3 в ISO 9660:1988.

Просто решаем, что SEPARATOR 1 и SEPARATOR 2 расширяются до 16-битных.


Таблица 2 - Коды разделительных символов

ISO 9660:1988        Числовое        Unicode
Разделитель          значение        UCS-2 код

SEPARATOR 1          (2E)            (002E)
SEPARATOR 2          (3B)            (003B)

переход к заголовку

Порядок сортировки

ISO 9660 определяет порядок записей в "таблице упорядочения" и определяет порядок записей в "таблице упорядочения директорий". Эти алгоритмы сортировок рассчитаны на использование 8-битных кодировок. Эти алгоритмы не рассчитаны на использование "широких" символов.

Обсуждаемая проблема относится к следующим ISO 9660:1988 секциям:

  • 6.9.1 Порядок записей в таблице упорядочения

  • 9.3 Упорядочение записей директорий

Требуемое изменение: всего лишь переопределить значение сортировочного выравнивающего байта в (00).

Просто решаем, что для последовательного сравнения байтов по ячейкам, остаётся подходящим сортировочный алгоритм для полей дескрипторов, записанных в UCS-2 SVD иерархии директорий. Это одна из главных причин выбора формата "Big Endian" для представления всех UCS-2 символов.

Сортировка по натуральному языку

На Unicode томах, 16-битные UCS-2 коды используются для определения порядка в записях "таблицы упорядочения" и "таблицы упорядочения директорий".

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

Выравнивающие байты отступа

Сортировочные алгоритмы, описанные в ISO 9660:1988 секциях 6.9.1 и 9.3 пригодны, за исключением выравнивающего "байта отступа".

Значение выравнивающего "байта отступа" описанного в ISO 9660:1988 секции 6.9.1 должно быть (00). Оно изменено со значения (20), указанного в той секции.

Значение выравнивающего "байта отступа" описанного в ISO 9660:1988 секции 9.3 подсекциях (a) и (b) должно быть (00). Оно изменено со значения (20), указанного в той секции.

Значение выравнивающего "байта отступа" описанного в ISO 9660:1988 секции 9.3 подсекции (c) должно быть (00). Оно изменено со значения (30), указанного в той секции.

Просто решаем установить все выравнивающие "байты отступа" в ноль, чтобы упростить сортировку.

Обязательная упорядоченность

Правильная упорядоченность обязательна на UCS-2 томах.

Поля дескриптора, зависящие от UCS-2 Escape-последовательности

Если UCS-2 escape-последовательность в supplementary volume descriptor обнаружена, то следующие поля дескрипторов, относящиеся к этому supplementary volume descriptor, содержат UCS-2 символы.

  • ISO 9660:1988 Section 8.5.4 System Identifier

  • ISO 9660:1988 Section 8.5.5 Volume Identifier

  • ISO 9660:1988 Section 8.5.13 Volume Set Identifier

  • ISO 9660:1988 Section 8.5.14 Publisher Identifier

  • ISO 9660:1988 Section 8.5.15 Data Preparer Identifier

  • ISO 9660:1988 Section 8.5.16 Application Identifier

  • ISO 9660:1988 Section 8.5.17 Copyright File Identifier

  • ISO 9660:1988 Section 8.5.18 Abstract File Identifier (missing section)

  • ISO 9660:1988 Section 8.5.19 Bibliographic File Identifier

  • ISO 9660:1988 Section 9.1.11 File Identifier

  • ISO 9660:1988 Section 9.4.5 Directory Identifier

  • ISO 9660:1988 Section 9.5.11 System Identifier (of Extended Attribute Record)

переход к заголовку

Уменьшение ограничений ISO 9660 на томах с UCS-2

Некоторые ISO 9660 ограничения уменьшены для получения более практичной спецификации записи. Принимающие Joliet системы должны быть способными принимать диски, записанными с меньшими ограничениями относительно ISO 9660.

Максимальная длина имени файла увеличена

Принимающие Joliet системы должны принимать иерархию директорий, записанную с именами файлов длинней, чем разрешено ISO 9660 принимающим системам.

ISO 9660 (секция 7.5.1) указывает, что сумма нижеследующих значений не должна превышать 30:

  • Если это имя файла, то длина имени файла.

  • Если это расширение имени файла, то длина расширения имени файла.

На Joliet-совместимых носителях, однако, вычисляемая выше сумма не должна превышать 128, позволяя более длинные имена.

Указанные выше длины считаются в байтах.

Максимальная длина имени директории увеличена

Принимающие Joliet системы должны принимать иерархии, записанные с именами длиннее, чем принимающие ISO 9660.

ISO 9660 (секция 7.6.3) указывает, что длина имени директории не должна превышать 31.

На Joliet-совместимых носителях, однако, длина имени директории не должна превышать 128, позволяя более длинные имена.

Указанные выше длины считаются в байтах.

Имена директорий могут содержать расширения, так же как у файлов

ISO 9660 не разрешает именам директорий содержать "расширение".

На Joliet-совместимых носителях, однако, имена директорий могут содержать расширения.

Joliet формат имени директори должен строиться в соответствии с ISO 9660 секцией 7.5.1 "Формат имени файла", за исключением лишь того, что длина имени директории может превышать 31, но не больше 128.

Вдобавок, Joliet формат имени директории должен соответствовать ISO 9660 секции 7.6.2 "Специальные идентификаторы директорий".

Длина директории должна рассчитываться в соответствии с ISO 9660 секции 7.5.2 "Длина имени файла".

Указанные выше длины считаются в байтах.

Максимальная глубина вложенности иерархии директорий может превышать 8 уровней

ISO 9660 (секция 6.8.2.1) накладывает ограничение на глубину иерархии директорий. Эта секция ISO 9660 определяет, что число уровней вложенности иерархии не должно превышать восьми.

На Joliet-совместимых носителях, однако, число уровней вложенности иерархии может превышать восьми.

Joliet-совместимые носители в остальном должны соответствовать ISO 9660 секции 6.8.2.1, при этом для каждого записанного файла сумма нижеследующих значений не должна превышать 240:

  • длина имени файла;

  • длина имён директорий по всему пути к файлу;

  • количество директорий в пути к файлу.

Указанные выше длины считаются в байтах.

переход к заголовку

Расширения Joliet

Joliet для многосессионных дисков

Многосессионная запись общепринята.

При создании устройств чтения CD-ROM с поддержкой многосессионности, принимающие Joliet системы должны принимать носители, использующие многосессионную методику записи.

Подробности этой методики даны ниже.

Логическая адресация секторов при многосессионной записи

Каждому сектору на носителе соответствует Логический Адрес Сектора.

Адреса логических секторов идут линейно от нуля и выше на протяжении всей поверхности носителя, без влияния границ сессий.

Логический адрес сектора ноль является сектором с адресом Minute:Second:Frame 00:02:00 первой сессии. Все остальные логические адреса являются относительными адресу Minute:Second:Frame 00:02:00 первой сессии.

Преобразование между Логическим Адресом Сектора и Minute:Second:Frame адресом делается так: Логический Адрес Сектора = (((Minute*60)+Seconds)*75) - 150.

Просто решаем, что логический адрес сектора на многосессионном диске является сплошным адресным пространством.

Многосессионная адресация

Область данных тома может состоять из нескольких сессий.

К примеру, если диск записан 3 сессиями, то иерархия директорий, относящаяся к дескриптору тома в сессии 3, может ссылаться на логические сектора, записанные в сессиях 1, 2, или 3.

Нахождение списка дескрипторов для многосессионных томов

Список описателей тома должен начинаться с 16-го логического сектора в первой дорожке последней сессии на диске.

Этот список описателей замещает собой все другие списки описателей тома на диске. Интерпретация списка описателей тома в остальном неизменна.

Для примера рассмотрим диск, содержащий 3 сессии, где сессия 1 начинается с 00:00:00, сессия 2 начинается с 10:00:00, и сессия 3 начинается с 20:00:00. Список описателей тома для этого диска начинается с адреса Minute:Second:Frame 20:00:16.

Эта методика совместима с многосессионной методикой CD-Bridge.

Прослеживание режимов записи и видов дорожек

Область данных для Joliet тома на CD-ROM должна содержать сектора Mode 1 или Mode 2 Form 1. CD-ROM носители, используещие методику многосессионности записи описанную выше, могут не содержать секторов Mode 1 на носителе вообще. Mode 1 сектора допустимы только на односессионных носителях.

Mode 2 Form 2 сектора и CD-Digital Audio дорожки могут быть записаны на этом же носителе как Joliet том. В этом случае CD-XA расширение Joliet может быть использовано для идентификации Mode 2 Form 2 дополнений и CD-Digital Audio дополнений.

CD-Digital Audio дорожки не могут быть записанными в сессии 2 и выше. Если какие-либо CD-Digital Audio дорожки имеются, то все эти CD-Digital Audio дорожки должны быть записаны в первой сессии.

CD-XA расширение Joliet

CD-ROM диски, используещие Joliet расширения к ISO 9660 и которые также содержат расширение mode 2 form 2 extents или CD-Digital Audio, должны маркироваться CD-ROM XA Label как указано в "System Description CD-XA" секция 2.1.

CD-ROM XA Label должен располагаться по смещению 1024 (позиция байта 1025) в Joliet Supplementary Volume Descriptor. Сигнатура идентификации 'CD-XA001' должна быть записана по смещению 1024 в Joliet Supplementary Volume Descriptor. Эта сигнатура идентификации эквивалентна шестнадцатеричным байтам (43)(44)(2D)(58)(41)(30)(30)(31).

Расширение Mode 2 form 2 должно идентифицироваться с использованием правил записи, указанных в "System Description CD-XA", секция 2.7. В данном случае, бит 12 в поле Attributes в "XA System Use Information" должен быть установлен в один, указывая, что файл содержит сектора mode 2 form 2. Смотрите ниже информацию, касающуюся Data Length.

Расширение CD-Digital Audio должно идентифицироваться с использованием правил записи, указанных в "System Description CD-XA", секция 2.7. В данном случае, bit 14 в поле Attributes в "XA System Use Information" должен быть установлен в один, указывая, что файл содержит сектора CD-Digital Audio. Смотрите ниже информацию, касающуюся Data Length.

Если файл маркирован битом 12 установленным в один, или битом 14 установленным в один в поле Attributes в "XA System Use Information", тогда поле Data Length в Записи Директории должно содержать значение в 2048 раз больше количества секторов, содержащих эти данные.

Смотрите ISO 9660:1988 секция 9.1.4.

Другие расширения Joliet

Расширения Joliet для ISO 9660 спроектированы для сосуществования с другими расширениями, такими как "System Use Sharing Protocol" и "RockRidge Interchange Protocol". Однако, эти протоколы не составная часть Joliet спецификации.

Методики интеграции прочих протоколов в Joliet здесь не даётся.

переход к заголовку

Библиография

ISO 2022 - Information processing - ISO 7-bit and 8-bit coded character sets - Code extension techniques, International Organization for Standardization,

ISO 9660 - Information processing - Volume and file structure of CD-ROM for information interchange, International Organization for Standardization, 1988-04-15

ISO 10149 : 1989 (E) - Information technology - Data interchange on read-only 120mm optical data discs (CD-ROM) "YellowBook", International Organization for Standardization, 1989-09-01

ISO 10646 - Information technology - Universal Multiple-Octet Coded Character Sets (UCS), International Organization for Standardization,

The Unicode Standard - Worldwide Character Encoding Version 1.0, The Unicode Consortium, Addison-Wesley Publishing Company, Inc, 1990-1991 Unicode, Inc., Volume 1

Orangebook, N. V. Philips and Sony Corporation, November 1990

System Description CD-XA, N. V. Philips and Sony Corporation, March 1991

System Use Sharing Protocol

RockRidge Interchange Protocol


Авторское право © 1995 Корпорация Microsoft если иначе не указано. Все права защищены.

Переводчик: Александр Кобец. Если Вы обнаружите смысловую путаницу или неточность, напишите мне на E-mail: Alexander Kobets < Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script >



 
« Пред.   След. »
 
 
 
19.06.2018 г.
up!