다음 이전 차례

7. 변환 및 디스크 관리

디스크의 헤드, 실린더, 트랙과 같은 구조정보는 MFM이나 RLL 형태의 디스크 시대부터 존재하던 것이다. 그 시대에 이러한 구조정보는 물리적인 정보와 동일하였다. 근래에 IDE 나 SCSI 디스크에서는 그 누구도 실제적인 디스크의 구조정보가 어떻게 되는지 관심을 두지 않는다. 실제로 트랙당 섹터의 수는 변동적이다 - 예를 들어 디스크의 바깥쪽 트랙에 할당된 섹터의 수가 안쪽 트랙보다 많다. 그러므로 트랙당 섹터의 정확한 수치는 존재하지 않는다. 다소 떨어진 얘기로 IDE INITIALIZE DRIVE PARAMETERS (91h) 명령은 현재 디스크가 가지고 있는 것으로 가정되는 헤드와 트랙당 섹터의 수를 디스크에 알려준다. 2개의 헤드를 갖는 대형의 최신 디스크가 15 또는 16개의 헤드를 가지고 있다고 BIOS 에게 알리는 것은 꽤 일반적인 일이며, 이 같은 경우 BIOS는 다시 사용자 프로그램에 255개의 헤드가 있는 것으로 알린다.

사용자에게는 디스크를 마치 섹터 번호에 의해 참조될 수 있도록 0, 1, 2,..의 일차원적인 배열로 간주하는 것이 적격이다. 그리고 특정 섹터의 디스크상 위치 정보는 firmware 수준에서 처리되도록 하는 것이 적격이다. 이와 같은 일차적 번호부여 방법을 LBA 라고 한다.

그러므로 개념적인 그림은 다음과 같다. DOS, 또는 몇몇의 boot loader는 BIOS 와의 통신을 위해 (c,h,s) 방법을 사용한다. BIOS 는 (c,h,s) 방식을 구조정보(Geometry) 속임기법을 사용하여 사용자가 사용하는 LBA 방식으로 변환한다. 디스크가 LBA를 받아 들이면, 이 정보는 디스크 입출력을 위해 사용된다. 그러나 그렇지 않으면, 현재의 디스크가 사용하는 구조정보를 이용하여 (c',h',s') 방식으로 역변환되고, 이를 이용하여 디스크 입출력이 이뤄진다.

언어사용에 있어 혼돈이 있으니 주목하라 : : `LBA'는 디스크 용량을 표시하는 용어로서 이것은 `Linear Block Addressing' 을 의미하고(CHS 주소방법에 반대되는 방법), BIOS 구성에서 이것은 `assisted LBA` 라고 불려지는 변환기법을 의미한다. 아래` 8.4 GB 제한 '를 보기 바란다.

firmware가 LBA를 지원하지 않지만 BIOS가 변환에 대해 알고 있는 경우, 유사한 작업이 일어난다. (구성단계에서 이것은 `Large'라고 표시된다) 이제 BIOS 는 (C,H,S)의 구조정보를 운영체제에게 제공하고, 디스크 컨트롤러와 (C',H',S') 정보를 이용한다. 일반적으로 S = S', C = C'/N, H = H'*N 에서 N은 C' <= 1024를 만족시키는 2의 지수승으로 가장 작은 값이다. 그러므로 C' = C/N에서 버려지는 용량을 최소화 한다. 다시 이것은 8.4 GB (7.8 GiB)까지 엑세스를 가능케 한다.

(세번째 설치 옵션은 일반적으로 `Normal', 이것은 아무런 변환 과정도 필요 하지 않는 방법이다.)

BIOS에서 `Large' or `LBA' 모드를 지원하지 않아도, 소프트웨어적인 해결책이 있다. OnTrack 이나 EZ-Drive같은 디스크 관리 프로그램은 BIOS의 디스크 핸들링 루틴을 그들의 루틴으로 대체시킨다. 때때로 이것은 MBR과 이후의 sector에 디스크관리용 코드를 위치시키므로서 수행된다. (OnTrack 프로그램에서는 이 코드를 DDO(Dynamic Drive Overlay) 라고 부른다.) 그래서 이것은 다른 운영 체제이전에 부트된다.

이것이 바로 Disk 매니저가 설치된 상태에서 플로피로부터 부팅시 겪게 되는 문제이다.

결과는 BIOS를 통한 변환과 거의 비슷하다. 그러나 동일한 디스크상에서 여러가지의 운영체제를 사용하는 경우, 디스크 매니저는 더 많은 문제점을 야기 시킬수 있다.

Linux는 1.3.14 이후 버전부터 OnTrack Disk Manager 를 지원해 왔고, EZ-Drive는 1.3.29 이후 버전 부터 지원을 하고 있다. 보다 자세한 내용은 아래에 적혀 있다.


다음 이전 차례