FAT

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

FAT(File Allocation Table)은 마이크로소프트가 MS-DOS를 위해 개발한 파일 시스템이다.

상세[편집 | 원본 편집]

빌 게이츠를 비롯한 마이크로소프트의 창립자들이 1976~1977년 사이에 개발하였다. 이 때문에 FAT의 지적재산권은 마이크로소프트에게 있으며, 공식적으로 사용하는 데에 마이크로소프트에 내야 하는 비용이 있었기 때문에 구글안드로이드 운영체제를 개발할 때 내부 저장소에 FAT를 쓰지 못하여 앱을 외장 SD 카드 등에 직접 설치할 수 없는 등의 문제를 일으켰다. 현재는 마이크로소프트가 FAT R/W 기능이 구현된 소스 코드를 공개하고 비상업용 목적으로는 라이선스 비용을 청구하지 않기로 하면서 상황이 조금 나아졌지만 원천기술에 대한 라이선스 비용은 상용 제품에서는 여전히 내야 한다.

단순 연결 리스트(Singly Linked List) 자료구조를 활용하며, 최소 512B의 크기를 가지는 파일 클러스터의 ID들을 디스크에 기록하둔 테이블을 통해 파일을 찾는다. 파일 삭제에 대해 파일 이름 첫 글자를 확장 아스키 코드의 0xE5(그리스 소문자 시그마)를 붙이는 식으로 대응하기 때문에 파일 데이터가 깨지지만 않으면 복구 프로그램을 만들 수 있다.

이동식 데이터 저장장치(플로피 디스크 때부터 현재의 USB 메모리, SD카드 등)에서 압도적인 파일 시스템 시장 점유율을 가지고 있다. 다른 이동식 미디어 파일 시스템들은 자체 플랫폼에서 내부적으로 쓰는 경우가 많기 때문에 FAT의 위상은 지금까지 그래왔듯 높게 유지될 것으로 보인다.

버전[편집 | 원본 편집]

  • 초기 FAT: 마이크로소프트가 최초로 만들었던 BASIC 인터프리터의 파일 입출력을 위해 만든 최초 버전은 파일 클러스터 ID의 비트 크기가 8bit다.
  • FAT12: 파일 클러스터 ID의 비트 크기가 12bit인 버전. 초기 MS-DOS에 쓰였으며 플로피 디스크는 이 파일 시스템을 사용하는 것으로 사실상 통일되었다.
  • FAT16: 파일 클러스터 ID 비트 크기를 16bit로 늘린 버전. 개별 클러스터의 크기를 최대 32KB까지 늘릴 수 있기 때문에 최대 2GB의 디스크 파티션을 만들 수 있다. 후기 MS-DOS와 초기 윈도우까지는 하드디스크의 용량이 크지 않았기 때문에 이 포맷을 채용하는 경우가 많았다.
  • FAT32: 파일 클러스터 ID 비트 크기가 32bit인 버전. 윈도우 XP가 현역이던 시절까지 각종 이동식 저장장치에 주력으로 쓰였고 지금도 사용하는 경우가 많다. 개별 클러스터의 크기를 이론상 256KB까지 늘릴 수 있어서 수 TB까지 대응이 가능하다. 보통은 64KB 클러스터 크기로 4TB까지 지원한다. 다만 개별 파일 크기가 4GB로 제약되는 문제가 아직 있어서 현재는 주력 FAT 버전이 exFAT로 조금씩 넘어가고 있다.
  • exFAT: FAT64라고도 하는 파일 클러스터 ID 비트 크기가 64bit인 버전. 16 엑사바이트까지 개별 파일 크기를 키울 수 있고 이론상 최대 크기는 128 페타바이트이다. 다만 이전 버전과 달리 백업 및 데이터 복구용으로 클러스터 테이블을 중복 기록하지 않아 안정성이 좀 떨어진다.