밑에서 "섹터번호" 는 1부터 카운트되는 값이고
나머지는 0부터 카운트 되는 값입니다.
즉, 섹터번호는 0번은 없다고 간주하셔도 이해하는데 지장없습니다.
여기서 트랙은 cylinder라고도 불리워집니다. (보통은 실린더라고 부름)
1. Sector / Cylinder / head 를 논리적 상대섹터로 변환하는 공식
- 논리적섹터번호 = (헤드번호 * 트랙당섹터수) + (트랙번호 * 트랙당섹터수*총헤드수)
2. 논리적 상대섹터를 Sector / Cylinder / Head로 바꾸는 공식
논리적 상대섹터를 편의상 LBA라고 칭할께요.
- 섹터번호 = (LBA % 트랙당섹터수) + 1
- 트랙번호 = LBA / 트랙당섹터수 / 총헤드수
- 헤드번호 = LBA / 트랙당섹터수 % 총헤드수
다음과 같은 공식은 적어도 부트로더 만들어 본사람은 알고 있는
기본상식의 공식입니다.
예전에 만들어보다가 정리해둔거 다시 떠올리게 되는군요.
파일이 저장될때 데이터의 저장순서는 보통은 다음과 같습니다.
하지만 반드시 그러한 것은 아니며 인터리브방식은 2개이상씩 섹터를
건너뛰며 접근합니다.
만약 섹터 1~63 / 트랙 0 ~ 1024 / 헤드 0 ~ 15 인경우
설명의 편의상 섹터는 S 트랙은 C 헤드는 H로 표시하겠습니다.
S1~63 > H0~15 > C0~1024
이런순입니다.
랄프 브라운의 인터럽트 리스트...
Ralf Brown의 인터럽트 리스트나
BIOS Specification 문서(피닉스 홈피 뒤지면 있음) 보면 그거 나와 있습니다.
INT 13h/AH=08h를 사용하면 현재 사용중인 하드디스크의
Cylinder/Head/Sector 정보가 리턴됩니다.
또 요즘 돌아다니는 기가급 하드들은 이 정보가 다 짜가라는것도 아시죠.
예전 소프트웨어와의 호환성을 위해서 일부러 조작된 값을 보내주죠. 그리고
그 CHS로 액세스할경우 BIOS나 하드디스크 컨트롤러가 알아서 LBA로
바꿔버립니다.
Written By the Black Knight of Destruction
왜 필요한 것인가? 공식을 열거해봅니다.[code:1]밑에
왜 필요한 것인가? 공식을 열거해봅니다.
예전에는 대부분 헤드, 실린더, 트랙, 이런걸로 하드디스크에 접근을
예전에는 대부분 헤드, 실린더, 트랙, 이런걸로 하드디스크에 접근을
했는데, 요새는 전부 LBA 를 통해서 접근한다고 보시면 됩니다.
그래서 헤드, 실린더, 이런 정보가 거의 고정되어 있죠.
그럼 고운 하루되시길...
=========================
CharSyam ^^ --- 고운 하루
=========================
[quote]1. Sector / Cylinder / head 를 논리적
약간 오타가 있는 것 같습니다.
논리적섹터번호 = (헤드번호 * 트랙당섹터수) + (트랙번호 * 트랙당섹터수*총헤드수) + (섹터번호 -1)
(섹터번호 -1) 을 더하는 것이 빠져있네요.
[quote="mushim"][quote]1. Sector / Cylin
예리한 지적이십니다.
글 적으면서 누락되었군요.
지적 고맙습니다.
댓글 달기