FAT 32 File System Structure Code Ache Wise



















- Slides: 19

FAT 32 File System Structure Code. Ache @ Wise. Guyz codeflaws at gmail. com 홍정우


1. Layout BOOT CODE (446 byte Partition Table 1 2 3 4 (Valid) (Invalid) 0 x. AA 55 PBR Root Entry RESERVED Area FAT 1 FAT 2 Clusters MBR (512 byte) Partition Table (16 byte) PARTITION 1 파티션을 나누지 않은 상태에서 파티션 테이블은 한 개만 정상이고, 나머지는 Invalid한 상태로 남게된다. ( 디스크를 구매하여 처음 사용하는 상태) 앞으로는 이 구조로 설명을 진행함




1. LAYOUT (PARTITION) BOOT CODE (446 byte Partition Table 1 2 3 4 (Valid) (Invalid) 0 x. AA 55 PBR Root Entry RESERVED Area FAT 1 FAT 2 Clusters MBR (512 byte) Partition Table (16 byte) Reserved Area : 안 쓰는 영역 : PBR에 이 영역이 사용중인 섹터의 개수 가 저장되어 있으므로, FAT 1의 위치를 계 산 할 수 있다. 즉, PBR , Reversed Area , FAT 1 , FAT 2는 고정적으로 붙어 있음. Root Entry 역시 붙어 있지만 FAT 32에서는 루트 엔트리를 임의로 수정할 수 있음. 하지만 통상 붙어있음.

1. LAYOUT (PARTITION) FAT 1 : 파일에 대한 클러스터 정보가 들어있음. FAT 2는 단순히 FAT 1의 복사본. BOOT CODE (446 byte Partition Table 1 2 3 4 (Valid) (Invalid) 0 x. AA 55 PBR Root Entry RESERVED Area MBR (512 byte) Partition Table (16 byte) FAT 1 FAT 2 Clusters 0번 , 1번 클러스터는 사 용되지 않음. 2번부터 사 용됨.

1. LAYOUT (PARTITION) BOOT CODE (446 byte Partition Table 1 2 3 4 (Valid) (Invalid) 0 x. AA 55 PBR Root Entry RESERVED Area FAT 1 FAT 2 Clusters MBR (512 byte) Partition Table (16 byte) Root Entry : 루트디렉토리 , 즉 파티션의 최상위 디렉 토리 정보가 들어 있음. 디렉터리 엔트리에 대해서 자세히 알아보 자.




2. Trip to the Files BOOT CODE (446 byte Partition Table 1 (Valid) Partition 테이블에서 LBA_BEGIN값을 참조하여 해당 파티 션의 PBR 위치를 파악. 즉, 디스크의 시작점으로 부터 0 x 1 C 6 바이트 뒤에 있는 4 바이트 값이 실제 첫 번째 파티션의 주소다. LBA_BEGIN Partition Table 2 (Invalid) Partition Table 3 (Invalid) Partition Table 4 (Invalid) 0 x. AA 55 PBR Root Entry RESERVED Area FAT 1 FAT 2 Clusters little endian 이며, 섹터에 대한 오프셋이므로, PBR = 0 x 000009 d 8 * 512 = 0 x 13 b 000 즉, 파티션 1의 실제 오프셋은 0 x 13 B 000 이다.


2. Trip to the Files 0 x 138800바이트 0 x 13 B 000 PBR RESERVED Area 0 x 763 C 00바이트 * 2 FAT 1 FAT 2 PBR의 주소 : 0 x 13 B 000 Reserved Area 크기 : 0 x 138800 Root Entry FAT 1 , FAT 2의 크기 : 0 x. EC 7800 0 x 113 B 000 Clusters 0 x 763 C 00 Root Entry의 위치 : PBR 주소 + Reserved Area 크기 + FAT 1, FAT 2크기 = 0 x 13 B 000 + 0 x 138800 + 0 x. EC 7800 = 0 x 113 B 000 FAT 1의 위치 : PBR주소 + Reserved Area 크기 = 0 x 13 B 000 + 0 x 138800 = 0 x 273800




3. Real Demo