현재 Ramdisk 소스 코드를 읽고 있습니다. RamDiskFormatDisk 함수에서 문제가 발생합니다.FAT12/FAT16 - 섹터 수를 결정하는 요소는 무엇입니까?
if (fatEntries > 4087) {
fatType = 16;
fatSectorCnt = (fatEntries * 2 + 511)/512;
fatEntries = fatEntries + fatSectorCnt;
fatSectorCnt = (fatEntries * 2 + 511)/512;
}
else {
fatType = 12;
fatSectorCnt = (((fatEntries * 3 + 1)/2) + 511)/512;
fatEntries = fatEntries + fatSectorCnt;
fatSectorCnt = (((fatEntries * 3 + 1)/2) + 511)/512;
}
당신이 나에게 무엇을 그 의미를 설명 할 수 :
코드의 조각은 다음과 같습니다?
어떤 부분에 문제가 있습니까? – Adam
방정식. 왜 fatSectorCnt가 그렇게 계산되어야합니까? – XiaoMing
이 상수 4087은 FAT12 형식의 한계입니다. FAT12는 4K 개 이상의 항목이있는 FAT 테이블을 가질 수 없습니다. 그리고 그 수는 2^12에서 FAT12 자체의 서비스 데이터에 대한 여러 항목을 뺀 것입니다. 이것은 FAT12의 클러스터가 12 비트 숫자를 가지기 때문입니다. – osgx