Запись на CD реализуется следующим образом. На диск пишется так называемый track - непрерывная спиральная дорожка, на которую записываются цифры. Цифры записываются при помощи так называемых pits - это ямки на алюминиевом диске или помутнения в специальном слое записываемого диска. Эти pits не отражают свет лазера, в отличие от остальной поверхности диска, таким образом при считывании различаются единички и нолики.
Каждый трек должен начинаться со специального формата записи, называемой lead-in и заканчиваться специальной записью lead-out. Эти записи позволяют механике CD привода отследить начало и конец трека. Теоретически можно писать треки без lead-out, однако на некоторых приводах отсутствует контроль положения лазера (считается, что достаточно контролировать положение по записям типа lead-in и lead-out), поэтому лазер запросто может улететь за пределы рабочей области, что в клинических случаях приводит к порче CD привода. Насколько мне известно, ни одна из современных программ по записи CD не даст вам сделать диск без lead-out :)
При записи информации на поверхность используется избыточное кодирование Рида-Соломона, если я не ошибаюсь 11 к 8, то есть вместо 8 бит информации записывается 11. При этом в случае потери любых трех из 11 гарантируется восстановление записанных восьми бит.
Записывается информация не просто по спирали, а каким-то образом "размазывается" по поверхности диска. В результате мы имеем потрясающе надежное хранилище информации. Вы только вдумайтесь, если увеличить диаметр CD до диаметра земного шара, то расстояние между дорожками будет составлять несколько милиметров. Теперь вы представляете себе расстояние между дорожками диска, а теперь соотнесите его с размером царапин, которые вы ставите на поверхность диска :) Спецы говорят, что отверстие диаметром до 5 мм не должно повредить информацию на диске. Другое дело, что от этого отверстия в результате разгерметизации начнется разрушения несущего слоя диска - тогда информацию уже не спасти.
Логическая структура данных на диске
Трек начинается от внутренней стороны диска и идет к наружной. Треки делятся на секторы, не помню точно размер, около 2,5 КБ. часть этих данных используется для коррекции ошибок записи. По стандарту Аудио-CD для коррекции используется около 70 байт на сектор, результирующий объем сектора получается около 2500 байт, результирующий объем диска (по стандарту на диск влазит что-то около 360 тысяч секторов) получается около 750 МБ.
По стандарту CD-ROM для коррекции используется 500 байт на сектор, результирующий размер сектора - 2048 байт, полный диск - 650 МБ. Есть также промежуточный вариант, так называемые Multimedia CD, используется так же мало байт на коррекцию ошибок, как и в аудио-CD, но используется файловая система от CD-ROM. Так записывают, например, видео диски, при этом на диск можно впихнуть 750 МБ и даже чуть больше.
Резервы увеличения емкости CD
Можно записать больше секторов, чем положено по стандарту;
Можно ближе расположить дорожки, тем самым увеличив количество секторов. Именно так и записываются диски 700, 750, 800 МБ данных. Для их записи необходима поддержка таких возможностей со стороны софта и харда (пишущего CD привода).
Логическая структура информации на треке
Для односессионного диска в начале диска пишется так называемый TOC - table of contest - буквально "содержание диска". Это список записей на диске (песен для аудио-CD и файлов для CD-ROM) и адреса начальных секторов, которые содержат запись. Потом записываются собственно данные.
Теперь про многосессионные диски: с появлением записывающих CD приводов возникло желание записывать не сразу весь диск, а записывать информацию частями. Для этого разработали стандарт многосессионного диска, он же multi-track, multi-session, CD-XA. По этому стандатру на диск можно записывать несколько треков. При этом для обеспечения обновляемости информации TOC пишется в конце каждого трека, а при чтении диск просматривается в поисках TOC с конца - с наружной стороны диска.
Логическая структура диска при этом такова: в TOC могут фигурировать ссылки на сектора из всех сессий, это дает следующие возможности. Вы записали информацию на диск, сессия 1. Когда вы пишете сессию 2 для того, чтобы вы видели файлы, уже записанные на диске, вам нужно выполнить операцию импортирования предыдущей сессии (именно предыдущей, а не всех предудущих). При этом файлы, которые уже есть на CD не будут записываться на диск еще раз, а только в новом TOC будет включена ссылка на них, ссылка на 1ю сессию.
Вы можете "удалить" файл, не включив ссылку на него в новый TOC, при этом файл не будет виден в файловой системе. Естественно, стереть информацию с CD невозможно, поэтому получить доступ к такому файлу можно. Для этого надо заставить ОС использовать не последнюю TOC, записанную на диске, а указанную вами. Подобные утилиты называются session selector. Также это умеют программы для работы с образами CD, например ISO Buster.
Вы можете добавлять новые файлы на CD, при этом сам файл будет записан во 2ю сессию, ссылка на него во 2й TOC. Если у вас есть 2 файла с разными именами в одном каталоге то после записи 1й сессии вы будете видеть каталог с обеими файлами так, как если бы вы записали диск сразу целиком. Еще одно разумное ограничение файловой системы - если вы хотите записать файл с именем, совпадающим с именем уже записанного в 1й сесии файла. При этом новый файл записывается во 2ю сессию, ссылка на него - во 2й TOC. Теперь под старым именем вы будете видеть новый файл. Доступ к старому варианту файла можно получить при помощи session selector.
Следует помнить о том, что в начале и в конце трека есть lead-in и lead-out - они занимают место на диске, которое при однократной записи могли бы быть заняты данными. Таким образом "накладные расходы" на создание новой сессии составляют 11,4 МБ, ну считайте 12 :) То есть, на диск емкостью 650 МБ с уже записанной сессией в 300 МБ можно записать не более 650 - 300 - 12 = 332 МБ, а не 350, как кажется с первого взгляда.
При записи музыкальных многосессионных дисков каждая песня пишется в свой трек с lead-in и lead-out, что вызывает паузы в 2 секунды между треками. TOC при первой записи пишется в начале диска - для совместимости с аудио-техникой. Аудио-техника будет видеть только те песни, которые заявлены в TOC из начала диска. Вы можете добавить еще песни на диск, но они будут видны только на компьютерных приводах CD.
С форматом записи, при котором CD используется как обычный диск не знаком, но суть его примерно такова - записал что-то на диск - на диск записался файл и дополнение к файловой системе. Для того чтобы читать такой диск необходимы специальные драйверы, производительность такого диска очень низка из-за распределенной файловой системы, емкость уменьшается на 150 МБ (из 650) за счет постоянной перезаписи файловой системы. Мое мнение - все равно всякий хлам собирается на винчестере в отдельный каталог, так почему бы его не накопить сразу 650 Мег, ну или пусть мег 200-300 и залить одной сессией. И совместимость намного лучше.
Теперь, собственно, про запись
Есть 2 способа записи - DAO, disk at once, и TAO, track at once. Названия говорят сами за себя - за раз (на одной спирали) записывается весь диск или только один трек. Многосессионный диск должен использовать ТАО. Хорошие приводы используют оба режима, старые используют только DAO, существуют также ивзращения, которые понимают только ТАО.
ТАО дает паузы в 2 секунды между песнями при записи аудио-дисков, поэтому для записи правильных звуковых CD нужно использовать DAO. Правда, там есть еще одна тонкость - песня может начинаться только с начала сектора, если предыдущая песня занимает не весь предыдущий сектор, то остаток сектора будет заполнен тишиной, а следующая песня начнется только со следующего сектора. Поэтому запись делить на песни надо аккуратно. Есть для этого специальный софт, я знаю о Sound Forge 4.0 с плагином Audio CD maker или как там его :)
Из распространенного софта могу выделить Adaptec Easy CD Creator, последняяя версия - 5.2, CeQuadrant WinOnCD (3.7), Ahead Nero Burning ROM (5.5.6.9) и NTI CD Maker. Все проги поддерживают все что только можно (поддержка дисков больше 650 МБ есть только в AECDC версии 4.0+). Выбор программы - больше дело вкуса и привычки. Я пользую NERO.
Собственно запись диск можно проводить двумя способами - с созданием образа и "на лету". В первом случае сначала создается файл образа с побайтной копией трека, а потом этот файл записывается как трек на CD. Естественно, у вас на винчестере должно быть место для файла образа.
Во втором случае перед записью диска составляется ТОС, которая записывается во временный файл, больше место на винчестере не используется, а файлы записываются на CD прямо с винчестера, сети, других приводов CD, короче любых логических дисков. Учтите, что технология записи CD подразумевает запись с постоянной скоростью потока данных, если этот поток прервать, то будет разорвана спираль и диск будет испорчен, по край ней мере уже записанная его часть станет неиспользуемой (вы все еще можете использовать свободное место на диске, только нужно выполнить специальную операцию по приписыванию lead-out к обрубленной сессии - Close session).
В новейших приводах есть технология BurnProof или ее аналоги, которые останавливают процесс записи в случае недостаточной скорости потока данных и возобновляют, как только ваша Винда просвапится ;)) Но такие диски читаются хуже: непрерывная спираль диска имеет дефекты. Таким образом, крайне нерекомендуется использовать для записи на лету использовать источники, доступ к которым может занимать заметное время, как то привод CD (с его разгонами диска), сеть (с лагами), приводы ZIP (с его позиционированием). Я сам всегда собираю прообраз будущего CD на винчестере в отдельном каталоге (про каталог - это не обязательно, просто так удобнее), а потом записываю на лету (то есть образ не делаю).
Кстати, образ диска (image, iso image) создается при создании точной копии диска (disk copy, replica), при этом в файл образа записываются все треки, которые есть на исходном диске, а потом из файла образа на конечном диске воссоздается такая же копия треков. Так можно копировать CD с неизвестными файловыми системаим, например Macintosh или Sony PlayStation.
Хочу вас еще предостеречь от слишком активного использования компьютера во время записи CD, особенно если у вас IDE писАлка CD. Ни в коем случае не пользуйтесь дисководом - самая отвратно реализованная подсистема в Windows (по карйней мере 9х). В случае если компьютер подвиснет, даже на небольшое время, если порвется спираль - диск испорчен.
Файловые системы
Есть файловая система ISO 9660, которая поддерживает имена в формате 8-3, она используется для записи CD по крайней мере DOS'ом, Windows, Unix. Для записи длинных имен Unix используют расширения стандарта ISO под названием RockRidge, а Windows - Joilet. Они несовместимы друг с другом, но совместимы с базовым стандартом ISO 9660. Длина имени в Joilet - 60 символов, в RockRidge - не помню, ИМХО 255.
Формат CD для Macintosh не совместим с вышеназванными - у них там свои приколы...
Для AECDC 3.5 справедлива такая оговорка: при записи русских имен под Windows 9x используется кодировка 866, как в FAT32, а под WinNT - Unicode. Поэтому файлы с русскими именами, записанные под NT, нельзя прочесть на Win9x, наоборот - не проверял, ИМХО можно. Все современные программы таких проблем не имеют.
P.S. Все цифры приведены по памяти. По порядку величины должны быть верны, если что-то не совпадает с точностью до единиц младшего разряда - ищите сами в доках, если оно вам надо :)
Автор: Андрей Гуле