1

LBA 및 클러스터 번호가 궁금합니다.LBA 및 클러스터

  1. 항상 2 클러스터 LBA 0 :

    내 질문은 이것이다?

  2. 그러면 클러스터 0 및 1은 무엇입니까?

  3. 클러스터와 LBA의 차이점은 어디에서 시작합니까?

  4. CHS, LBA, 클러스터 nubmer?

  5. 유동 코드에서 add ax, WORD [datasector]은 무엇을 코딩합니까?

    ;************************************************; 
    ; Convert CHS to LBA 
    ; LBA = (cluster - 2) * sectors per cluster 
    ;************************************************; 
    
    
    ClusterLBA: 
          sub  ax, 0x0002       ; zero base cluster number 
          xor  cx, cx 
          mov  cl, BYTE [bpbSectorsPerCluster]  ; convert byte to word 
          mul  cx 
          add  ax, WORD [datasector]    ; base data sector 
          ret 
    

답변

7

디스크 드라이브의 계획에 번호를 여러 분야가 있습니다. 가장 이른 것의 하나는 CHS (실린더 머리 분야)이었다. 하나의 섹터는 실린더 (트랙), 읽기/쓰기 헤드 및 트랙 당 섹터 세 개를 지정하여 선택할 수 있습니다. 이 번호 체계는 디스크 드라이브의 실제 물리적 특성에 따라 다릅니다.

첫 번째 논리적 섹터는 실린더 0, 헤드 0, 섹터 1에 있습니다. 두 번째 섹터는 섹터 2에 있고 나머지도 마찬가지입니다. 디스크에 더 이상 섹터가 없으면 (예 : 1.44M 플로피 디스크에 트랙 당 18 섹터가 있음) 섹터 1에서 다시 시작하여 다음 헤드가 적용됩니다.

하면 약간 산수 절대 (또는 논리적 인) 섹터 번호 CHS 주소로 변환 할 수

:

L = (C * Nh + H) * Ns + S - 1 

C, H ANS S 실린더, 헤드 및 섹터 숫자 CHS adressing에 따르면, NhNs은 각각 트랙 (실린더) 당 헤드 수와 섹터 수입니다. 역 연산 (LBA를 CHS로 변환)은 이처럼 간단합니다.

LBA (Logical Block Addressing)이라고하는이 번호 체계에서 각 섹터는 단일 번호로 식별 할 수 있습니다. 첫 번째 논리 섹터는 LBA 0이고 두 번째 논리 섹터는 LBA 1입니다. 이 계획은 선형적이고 다루기 쉽습니다.

클러스터는 (파일 시스템 메타 데이터에 필요한 디스크 조각 및 디스크 공간을 줄이기 위해, 단순히 운영 체제 및 파일 시스템에 의해 함께 처리하는 디스크에 연속 분야의 그룹입니다 예.에 어떤 섹터가 디스크에서 발견 된 특정 파일 일 수 있는지 설명). 클러스터는 디스크의 용량에 따라 1 섹터 (512 바이트), 최대 128 섹터 (64 킬로바이트) 이상으로 구성 될 수 있습니다.

다시, 클러스터의 첫 번째 섹터의 논리 섹터 번호를 쉽게 계산할 수있다 :

U 클러스터 번호가
L = ((U - Sc) * Nc) + Sd 

, NC 개의 클러스터 내의 섹터들의 수는, Sc이 첫 번째 유효한 클러스터 번호이고 Sd은 일반 파일 데이터에 사용할 수있는 첫 번째 논리 섹터의 번호입니다. 후자의 두 매개 변수 (Sc와 Sd)는 완전히 파일 시스템 및 운영 체제 특정 값입니다.

일부 파일 시스템 (예 : FAT16 및 전체 FAT 제품군)은 특별한 목적으로 클러스터 번호 0과 1을 예약하기 때문에 첫 번째 실제 클러스터는 클러스터 번호 2 (이 경우 Sc = 2)입니다. 마찬가지로, 디스크의 시작 부분에 일부 예약 된 섹터가있을 수 있습니다. 여기에는 데이터를 쓰고 읽을 수 없습니다. 이 예약 영역은 부트 섹터 (boot record)와 같은 몇 섹터에서부터 수백만 섹터 (예 : 하드 디스크의 파티션보다 앞선 완전히 다른 파티션)까지 다양합니다.

허,이 대답은 길었습니다. 다음과 같이 결국, 귀하의 질문에 짧은 답변을 요약 할 수있다

  1. 아니, LBA 0은 항상 클러스터이 아니라, 지방의 경우 파일 시스템의 특정이 (클러스터 2가에서 사용 가능한 첫 번째 부문 인이다 디스크,하지만 항상 LBA 0 - 대답 5 참조).

  2. 클러스터 번호 0과 1의 해석도 파일 시스템에 따라 다릅니다 (FAT의 경우 클러스터 번호 0은 파일 할당 테이블의 빈 클러스터를 나타내고 클러스터 번호 1은 예약 됨).

  3. 아니요, 가장 큰 차이점은 클러스터 번호가 연속 섹터 그룹을 주소 지정하는 반면 LBA는 디스크의 단일 섹터를 주소 지정한다는 것입니다.

  4. 위의 긴 대답에서 수식 (수식)과 그에 대한 설명을 참조하십시오.

  5. 는 짧은 어셈블리 코드에서 말하기 어렵지만, 내 추측은 (위의 수식에 사우 스 다코타에 의해 언급) 파티션의 시작 부분에 예약 된 섹터의 수를 될 것입니다.