2007년 10월 1일 월요일

시디롬 CD ROM에 대해서

CD 규격은 다음과 같이 바뀌었습니다.


CD

1980년대 초에 Sony와 Philips가 Compact Disc (CD)를 만들었습니다.

CD-DA (Digital Audio)
RED Book ('82)


오디오 CD에 대해서 정한 것입니다. wav 파일이 바로 CD-DA의 데이터 형태입니다.
1개에서 99개까지의 트랙을 만들 수 있어 최대 99곡까지 담을 수 있으며, 44.1 KHz와 16비트 스테레오의 디지털 데이터를 수록할 수 있습니다.

Lead Out에 실제로는 1분 30초동안 계속 "0"만을 저장해서, CD 플레이어로 하여금 마지막이라는 것을 알릴수 있도록 제작되어야 합니다.
디지털 오디오가 들어가는 프로그램 영역에는 위에서 밝혔듯이 최대 99개의 트랙을 만들 수 있습니다.
Lead in, Program Area, Lead out 세 부분을 "Session" 이라고 합니다.

CD-ROM
Yellow Book ('84)


1984 년에 컴퓨터 데이터를 저장하기 위해 CD-ROM (Read Only Memory)를 만들었습니다. 대부분 내용이 레드북과 동일하지만, 레드북 규격이 데이터 저장에는 적당한 구조가 아니므로 1섹터당 2352 byte 를 저장하고 이 섹터는 분:초:섹터로 표시하도록 하였습니다.
Error Correction Code (ECC), Error Detection Code (EDC), Mode 1과 Mode 2를 정했읍니다.

Mode 1
섹터안에 Error Correction Code가 있어서 사용자는 섹터안에서 2,048 bytes만 사용할 수 있읍니다. 이러한 ECC로 텍스트나 프로그램과 같이 1 비트라도 에러가 있으면 안되는 경우에 적합합니다.

Mode 2
ECC 가 없어서 섹터안에 2,336 bytes를 저장할 수 있읍니다. ECC가 없으므로 에러가 있어도 크게 문제되지 않는 그래픽, 오디오, 비디오 데이터를 저장할 때 사용합니다. 비디오 시디(Video CD)가 CD-ROM Mode 2를 사용하고 있습니다.

그러나 세세한 사항은 CD-ROM 개발자에게 남겨 놓았습니다. 이로 인해 초기에 각자 나름의 파일 구조를 만들어 사용하게 되어 서로 호환이 어려었읍니다. 이를 해결하고자 새 규격이 마련되는데 이 것이 바로 ISO 9660입니다.

ISO 9660

하나의 CD-ROM은 한 개의 세션 또는 여러 개의 세션으로 구성되어 있고, 각 세션의 16번째 섹터에 PVD (Primary Volume Descriptor)가 있습니다.
PVD는 "CD001"라는 문자로 시작하여 이 저장매체가 CD-ROM이라고 컴퓨터에 알려 줍니다. 또한 경로 테이블이라고 디렉토리 정보를 담고 있는 부분이 있어서, 파일이 어디에 있는지 기록하고 있습니다.

3 단계로 구성되어 있읍니다.

1 단계
대부분의 운영체제 (도스 포함)에서 읽어들일 수 있읍니다.
도스의 파일과 같이 파일이름이 8문자, 확장자는 3문자 까지 가능하며, 사용할 수 있는 문자는 "A-Z", "0-9", "_"만 사용할 수 있읍니다. 하위 디렉토리는 8단계까지만 가능합니다. 파일은 연속된 섹터로 저장됩니다.
2 단계
1 단계 보다 더 제약이 적어, 긴 파일 이름을 사용할 수 있고, 사용할 수 있는 문자도 제약이 없읍니다. 단지 각각의 운영체제에서 지원하는 파일 형식에 의해서 기록되어지므로 도스는 호환되지 않습니다. 디렉토리도 기존의 8단계에서 32단위 까지 가능합니다.
3 단계
파일을 연속된 섹터가 아닌 형태로 저장할 수 있습니다.. Packet Writing등의 소프트웨어에서 사용됩니다. 호환성이 많이 적어집니다.

ISO 9660을 기초로 해서 여러 가지가 생겼습니다.

Rock Ridge
ISO 9660 Level 1 파일 시스템의 제한으로 유닉스나 리눅스의 긴 이름을 저장할 수 가 없습니다. Rock Ridge extension을 만들어 긴 이름을 저장할 수 있도록 합니다.

Joliet
ISO 9660 Level 1 파일 시스템의 제약을 극복하려고 Rock Ridge extension을 채택하지 않고 자체적으로 만든 파일시스템입니다.
윈 도우 95에서 에서 긴 파일 이름을 사용하여 CD에 기록할 수 있으며, 이후 윈도우 버전에서 읽을 수 있습니다. 여기에는 Unicode 국제 문자 세트도 사용할 수 있읍니다. 공백을 포함하여 최재 64 문자까지 기록할 수 있습니다.
DOS 및 이전 버전의 윈도우에서도 CD를 읽을 수 있도록 긴 파일 이름에 대해 DOS에서 사용하는 방식도, 8문자 파일이름과 3문자 확장자, 기록할 수 있습니다. 또한 DOS 이름 대신에 ISO 9660 표준에 맞는 파일 이름도 만들 수 있습니다.
ISO9660 에서 각 세션의 16번째에 PVD가 있습니다. 여기에서 경로 테이블이 있어서 파일이름이 8문자 확장자 3문자의 디렉토리 구조를 인식할 수 있게 됩니다. PVD의 뒤에 있는 SVD(Supplementary Volume Descriptor : 부 볼륨 기술자)을 찾아 참조합니다. 이로써 파일 이름이 64문자까지 확장된 디렉토리 구조를 인식하게 됩니다. 즉 디스크상에는 한 개의 파일에 대하여 2개의 디렉토리 구조가 존재하는 것으로, ISO9660만 지원하는 OS에서는 PVD만을 참조하고, Joliet에도 지원하는 OS에서는 먼저 SVD부터 참조를 하는것입니다. 다만 어느쪽으로 디렉토리를 찾아가도 같은 파일을 가리키고 있기 때문에 같은 파일을 2번 기록할 필요없이 사용할 수 있게 되는 것입니다.

따라서 CD에 저장시에 파일 시스템을 ISO 9660 Level 1 파일 시스템 + Rock Ridge로 합니다. 윈도우와 호환을 인하여 추가로 Joliet을 선택하여 저장합니다.

CD-R
Orange Book ("86-"90)


레 드북과 옐로우북의 규격을 벗어나지 않으면서, Track At Once(TAO), Disk At Once(DAO), Multi-Session, CD-RW, Packet Writing등에 관한 물리적인 기록방법에 관한 규정도 포함되어 있습니다.
레드북이나 옐로우북과 동일한 구조에 PCA와 PMA가 Lead in 앞에 추가된 형태입니다.


CD는 가운데에서 바깥 쪽으로 PCA, PMA, Lead In, 실제로 데이터가 저장되는 Program Area, Lead Out의 다섯 부분으로 이루어져 있습니다.
여기서 Lead In과 Lead Out은 꼭 한 개일 필요는 없읍니다. 여러 개가 있으면 바로 멀티세션(Multisession)이 되는 것입니다.



PCA 는 Power Calibration Area의 약자로, 레코딩을 시작하기 전에 레코딩을 테스트하는 부분입니다. 사용하는 레코더가 가장 알맞는 레이저 빔의 강도를 결정하기 위해 시험적으로 레코딩을 합니다. 싸구려 CD를 사용하는 경우에 이 부분에 문제가 있어서 "Power Calibration Error"가 생기기도 합니다.

PMA는 Programmable Memory Area의 약자로, 레코딩하고 있는 데이터의 정보를 임시로 저장하는 부분입니다. 보통 시디를 닫는다고 하는 말 (finalize라고도 하지요.)은 이 PMA에 저장되어 있는 데이터의 정보 (TOC : Table of Contents)를 Lead In 부분으로 옮기는 것입니다. 이렇게 CD를 닫아 버리면 더 이상의 추가적인 레코딩은 할 수 없겠지요.

Program Area란 첫 번째 track부터 마지막 track까지가 저장하고자 하는 데이터가 저장되는 부분입니다. 실제로는 각각의 Tract Data안에 여러 섹터가 있고 여기에 데이터가 저장됩니다.

Disk at Once와 Track at Once의 비교

DAO는 Disk at Once, 즉 디스크 한 장을 한번에 굽는 것이고, TAO는 Track at Once로 디스크 한 장을 트랙 단위로 굽는 것을 뜻합니다.
TAO가 먼저 사용되었으며, TAO에서 발생하는 몇 가지 문제점을 해결하기 위하여 사용된 방식이 DAO입니다.
가 장 기본적인 TAO 방식은 오디오 CD를 구울 때 사용하는 것으로, Audio CD 구조는 Red Book 규격으로 되어 있으며, 구조는 [Lead In] [Audio Track1] [Audio Track2] ............. [Lead Out]처럼 되어 있습니다. 이는 한곡을 트랙 단위로 나누어 사용하며, 트랙과 트랙간에 2초 간격으로 오디오 데이터를 기록합니다.
보 통 TAO 방식은 Audio CD 제작 시에만 사용되며, 레이저빔이 한 트랙별로 On/Off 를 반복하는 방식입니다. 여기서 Off된 구간이 오디오 갭(Gap)으로 나타나게 되는 것으로, 원본의 이미지와는 달리 Off된 구간이 존재하기 때문에 원본과 같은 사본을 기대할 수 없습니다.
이 방식으로 레코딩하면 먼저 레코딩할 데이터를 시디에 기록하게 됩니다. 이 때 시디의 PMA(Programmable Memory Area)에 레코딩하고 있는 데이터의 정보 (TOC : Table of Contents)를 임시로 저장하게 됩니다. 데이터를 모두 시디에 기록하였으면 마지막으로 이 PMA에 저장되어 있는 데이터의 정보 (TOC : Table of Contents)를 Lead In 부분으로 옮깁니다. 이 부분이 보통 말하는 시디를 닫는다고 하는 말 (finalize라고도 하지요.)에 해당되지요. 마지막으로 Lead out이 만들어집니다. 1개에서 99개까지의 트랙을 만들 수 있습니다. 트랙을 기록할 때마다 레이저 빔이 멈추고 다시 동작하기 때문에 마스터링 시디를 만들기에 적당하지 않겠지요.

반 면에 DAO 방식을 사용한다면 [Lead In] [All Audio Track] [Lead Out] 비교적 간단한 구조로, TAO에서 모든 트랙을 구운 후, 리드아웃을 하기 전에 TOC의 갱신 작업을 하는데 비하여, DAO는 CD의 첫 부분에 있는 TOC 작업부터 순서대로 시작하는 것입니다.
직접 Copy시 일반적으로 사용하는 방법으로 DAO로 만든 CD는 하나의 Session으로 구성되며 레이저를 중단하지 않고 처음부터 끝까지 연속으로 레코딩합니다. 따라서 Track간 Gap을 만들지 않고 PQ 채널을 그대로 복사할 수 있기 때문에 Master CD 제작, 게임 CD 백업 시에는 이 방식을 사용해야 합니다.
TAO처럼 트랙단위로 굽지 않기 때문에, Audio CD를 만들 때 이 방식을 이용하여 원하는 트랙간에 2초간의 간격을 제거할 수도 있습니다.
Multi session 같이 나중에 Data를 추가하려면 이 방식을 사용하면 절대 안됩니다. 그것은 Lead-in(TOC)을 기록한다는 것은 Closing 작업을 의미하며 모든 기록을 종료하여 완전한 CD를 만든다는 것이기 때문에 이 방식을 사용하면 더이상 Data를 추가할 수 없습니다.
이 DAO는 오버버닝에서도 언급이 되는 중요한 기능입니다.

Multi-Session

세션이란 시디 구조인 PCA, PMA, Lead In, Program Area, Lead out을 합한 것이 하나의 세션(session)이 됩니다. 멀티 세션이한 한장의 시디에 여러 개의 세션을 만드는 경우입니다.
각 세션이 레코딩 된 다음에 바로 일반 시디롬 드라이브에서 인식이 가능하도록 되어 있습니다. 세션을 만들때마다 해당 세션의 정보를 저장하는 공간으로 약 13.5메가 정도의 공간이 추가로 필요합니다.
멀티세션을 만드는데는 두가지의 방법이 있습니다.

Multi Volume Multi Session
CD내의 각 세션은 독립적으로 존재하며, 나중에 추가되는 세션에 대한 정보를 기록하고 난 뒤에는 이전의 세션에 대한 정보가 따로 기록되지 않으므로 최신 시디롬이 아닌 경우에는 앞쪽의 세션을 인식하지 못합니다.

Linked Multi Session
CD 내의 각 세션의 정보가 서로 연결되어 있습니다. 세션을 추가하는 과정에서 이전에 존재하는 세션에 대한 정보를 모두 읽어들여 새로운 세션의 정보와 함께 기록하므로 일반적인 시디롬에서는 마치 하나의 세션으로 구성된 시디를 읽는 것과 동일하게 작동됩니다.

Multi-Track
한 개의 세션안에 몇 개의 트랙이 있는 경우입니다. 트랙마다 300 byte 정도의 정보 저장 공간이 필요합니다.
최대 99개의 트랙까지 추가할 수 있습니다.

부팅 CD

컴퓨터의 BIOS에서 El Torito Bootable CD-ROM Format Specification v1.0를 지원하여, 부팅시디로 부팅할 수 있습니다.

1995 년 1월에 Curtus E. Stevens (Phoenix)와 Stan Merkin (나중에 IBM)가 "El Torito grill" 레스토랑에서 El Torito Specification V1.0을 만들었습니다. 이는 ISO-9660와 호환되고 바이오스에서 지원되면 CD로 부팅할 수 있습니다.

부팅시디의 구조는 일반 시디에 크게 두가지가 더 추가되어 있읍니다. 바로 Boot Record와 Boot Catalog입니다.

아래그림을 보면 이해가 될 것입니다.

Boot Record

일반시디의 Secondary Volume descriptor에 해당됩니다.
부팅시디에서는 Primary Volume descriptor 다음에 이 Secondary Volume descriptor인 Boot Record Volume descriptor가 있습니다.
ISO -9660에서 Primary Volume Descriptor는 session의 시작에서 sector 10h (16 decimal)에 있어야 한다고 정의했습니다. 또한 El Torito specification에서 Boot Record Volume Descriptor는 시디의 마직막 session에서 sector 11h (17 decimal)이라고 하였습니다.
Primary Volume Descriptor에 의해 이 저장매체는 CD-ROM이며, Boot Record Volume descriptor에 의해 이 시디가 부팅시디이라고 선언되는 것입니다.
아 래 그림과 같이 Boot Record 섹터 17은 항상 ".CD001.EL TORITO SPECIFICATION"로 시작하는데 이 부분이 부팅시디라고 알려주는 것입니다. (섹터 17의 offset은 17x2048=34816이며 34816의 hex 값이 8800입니다.)
또한 Boot Record는 다음의 Boot Catalog가 어느 섹터에 있는지 기록하고 있읍니다.
아래 그림에서 hexadecimal number 13 00 00 00 (5번 째 줄)는 섹터 19에 대한 absolute pointer입니다. 바로 이 섹터 19에 boot catalog가 있읍니다.

댓글 없음: