Режимы записи оптических дисков
Существует несколько методов записи оптических дисков: Track-At-Once (TAO), Disc-At-Once (DAO), Session-At-Once (SAO) и Packet Writing.
Методы и полная последовательность команд от хоста к дисководу для их реализации определены в спецификации MMC, которая есть раздел спецификаций SCSI для CD/DVD/BluRay приводов. Данная статья есть краткий пересказ MMC или же источников, основанных на ней.
Информация в данной статье не относится к DVD дискам, только к CD.
DVD-диски имеют другие режимы записи, так, например, DVD-RAM пишется посекторно так же, как и жесткий диск или дискета, DVD+RW тоже поддерживает такое, но только после форматирования, DVD-RW поддерживает два режима — Sequential и Restricted Overwrite, DVD+R поддерживает единственный режим записи, по последовательности команд более всего похожий на Track-At-Once для CD.
Причины существования разных способов
В начале и конце CD-диска существуют так называемые lead-In и lead-Out зоны, по 150 блоков каждая. В однобитовых дополнительных каналах информации (1 бит на сектор) этих зон записывается окончательное оглавление диска.
CD-R и CD-RW также поддерживают временное оглавление диска, находящееся в специальной перезаписываемой (даже на CD-R) области.
Не-пишущие CD-устройства (например, автомобильные) обычно исполняются не способными читать временное оглавление, то есть вообще читать диск, если на нем нет окончательного оглавления, то есть не записаны lead-in и lead-out. Такие же ограничения бывают и у CD-R/RW приводов при использовании стандартной последовательности команд от CD-стека операционной системы, то есть чтение возможно только из специального ПО, умеющего формировать специальные последовательности команд.
Таким образом, для возможности чтения диска такими устройствами необходимо сформировать lead-in и lead-out (на основании временного оглавления и данных, посланных хостом), что есть процесс небыстрый.
Методы записи отличаются тем, на кого возложена обязанность этого формирования — на прошивку привода или же на ПО хоста.
Track-At-Once (Дорожка за раз)
При записи диска с использованием этого метода пишущий лазер записывает каждую дорожку по отдельности, оставляя при этом между дорожками промежутки в 2 секунды. Когда все дорожки на диск успешно записаны, по команде CLOSE TRACK/SESSION начинается запись служебной информации: Lead-In[1] (в начале сессии) и Lead-Out[2] (в конце сессии).
Название связано с тем, что пауза между записью 2 дорожек может быть любой длительности и даже включать в себя перенос диска с одного компьютера на другой. Как правило, незакрытые сессии не доступны ни CD-плеерам, ни обычному CD-стеку операционной системы — только специальным программам записи на CD.
Этот метод поддерживает 3 режима финализирования диска:
- Фиксация — когда на диске закрывается только сессия. Структура диска при этом может быть такой:
Lead-In -----
-Дорожка_01 |
-Дорожка_02 > Сессия 01
-Дорожка_03 |
Lead-Out ----
Впоследствии на такой диск можно добавить ещё несколько сессий. При этом структура диска может быть такой:
Lead-In ----
-Дорожка01 |
-Дорожка02 > Сессия 01
-Дорожка03 |
Lead-Out ---
Lead-In ----
-Дорожка04 > Сессия 02
Lead-Out ---
- Финализирование — когда весь диск закрывается и добавление на него новых сессий становится невозможным.
- Без финализирования — когда на диск записываются одна или более дорожек и сессия остаётся открытой (в этом случае служебные области Lead-In[3] и Lead-Out[4] не записываются). Структура такого диска может быть примерно такой:
-Дорожка01
-Дорожка02
-Дорожка03
Такой диск будет нечитаемым на других компьютерах (нечитаемым как обычный диск средствами CDFS/UDFS ни на каких компьютерах вообще, читаемым и пополняемым только в программах записи на CD), пока сессия на нём не будет закрыта. Зато впоследствии на него можно дописать новые дорожки, и закрыть при этом сессию или весь диск, сделав его читаемым. При этом и старые и новые дорожки будут находиться в первой сессии:
Lead-In ----
-Дорожка01 |
-Дорожка02 |
-Дорожка03 > Сессия 01
-Дорожка04 |
-Дорожка05 |
Lead-Out ---
Преимуществом метода является то, что на момент начала записи не нужно знание размера будущей дорожки — ее можно закрыть в любой момент.
Временное оглавление диска строится «на лету» операциями открытия дорожки и CLOSE TRACK/SESSION в режиме Close Track, lead-in и lead-out диска записываются на основе временного оглавления командой CLOSE TRACK/SESSION в режиме Close Session и Finalize Disc.
Disc-At-Once (Диск за раз)
Существует две разновидности этого метода — Disc-At-Once 96 и просто Disc At Once (терминология различается в разном ПО записи).
Второе есть то же, что Session At Once, но с дополнительным CLOSE TRACK/SESSION Finalize Disc в конце.
Первое есть совсем иной режим, в которой содержимое lead-in и lead-out формируется ПО хоста и шлется приводу командами WRITE. Во всех иных режимах lead-in и lead-out формируются прошивкой привода.
Session-At-Once (Сессия за раз)
Длительность и типы данных каждой дорожки сводятся ПО хоста в таблицу, называемую cue sheet и представляющую собой оглавление будущей сессии.
Таблица шлется приводу командой SEND CUE SHEET, после чего командами WRITE шлется без каких бы то ни было пауз содержимое всех дорожек сессии подряд (в правильном типе данных — «сырые» данные 2352 байта на блок, «приготовленные» данные 2048 байт на блок, или же аудио).
Недостаток режима в том, что на момент начала записи необходимо знать длину всех дорожек.
При использовании этого метода оглавление сессии известно из cue sheet с самого начала записи, что дает возможность записать lead-in перед записью данных.
Пишущий лазер включается (источник? моменты включения-выключения лазера не определены в MMC), пишет служебную область Lead-In, затем пишет дорожки с пользовательской информацией, затем пишет Lead-Out и выключается. Диск при этом финализируется (то есть впоследствии на него невозможно добавление данных). При использовании этого метода лазер не оставляет промежутков в 2 секунды между дорожками (точнее — промежутки управляются ПО хоста в cue sheet). Поэтому этот метод хорошо подходит для создания матриц.
Этот метод записи используется в операционной системе Windows Vista при записи дисков с так называемой «живой» файловой системой. Так же записывать данные на диск пакетным методом позволяют программы, udftools в Linux и Roxio Drag-To-Disc и Ahead InCD для Windows.
Суть метода заключается в том, что данные на диск пишутся не дорожками, а пакетами, с некоей возможностью произвольного доступа. При этом вы можете записывать на RW-диски данные точно таким же путём, как это делается с дискетами, жёсткими дисками, Flash-носителями и т. п. RW-диск перед использованием форматируется. На него записывается специальная файловая система — UDF. И после этого вы можете использовать ваш диск. Однако такой диск не будет читаться на непишущих дисководах и компьютерах, на которых не установлена операционная система Linux или Windows Vista или специальная программа (Roxio Drag-To-Disc или Ahead InCD).