본문 바로가기

(비정기) Dlbo's Post

파일시스템 - 02. FAT 파일시스템.

오래간만에 다시 연재하는 포스트이군요.

대략 3월부터는 월화수목금만 근무하게 되어 있으니

3월부터는 다시 연재가 제대로 이루어지지 싶습니다.

------------------------------------------------------------------------------------------------------------------

애초에 하드디스크건 무엇이건, 용량은 정해져있고, 0번지부터 max번지까지(물론 하드디스크의 맨 뒤 입니다) 쓸 수 있습니다.

마치 램을 쓰는것처럼 하드디스크도 그렇게 쓰인다는 것이지요. 이 번지 하나하나에 파일을 쑤셔넣고 배치하면, 그게 바로

파일시스템이 되는 것이지요.

그런데, 애초에 파일을 그냥 마구잡이로 하드디스크에 쑤셔넣는다면?

가뜩이나 느려 터진 하드디스크를 0번지부터 끝까지 하나하나 선형탐색으로 뒤져봐야 합니다.

그렇다고 이걸 정렬시켜 버리면 -_-

하드디스크 내의 모든 자료들이 서로 한데 섞여버려서 개판 5분'후'가 되겠지요.

이 때, 테이블을 사용해 하드디스크의 선두번지들을 파일을 관리하는 시스템으로 두는 것이 FAT파일시스템입니다.

File Allocation Table이라는 풀 네임이 이 테이블을 지칭하는 것이구요.

이해를 위한 개략적인 설명.

대략적으로 아래와 같은 모습을 볼 수 있습니다.



1번 테이블의 요소는 1번 클러스터를 가르키고 있고, 이 말인 즉슨, 1번 실제 저장 장소에 데이터가 있다는 얘기입니다.

2번 테이블의 요소는 3번 클러스터를, 3번 테이블의 요소는 2번 클러스터를 가르키고 있다는 겁니다.

실제로는, 테이블의 한 칸 한 칸마다 파일의 이름과, 해당 파일의 내용이 몇번 클러스터에 있는가가 기술되어 있습니다.

클러스터란, 데이터를 관리하기 편하도록 나눠둔 하나의 단위이고, 엔트리란, 파일의 기초적 정보를 저장하는 내용입니다.

실질적으로는, 아래와 같은 모양이 나오겠지요.


4개의 클러스터에 걸친 파일이 저런 모양새를 가진다는 겁니다.

그리고 보통의 FAT시스템이라면 1번 클러스터는 루트 디렉터리를 의미하지요.

1번 엔트리는 2번 엔트리를, 2번 엔트리는 4번 엔트리를, 4번은 6, 6번에서는 EOC(End Of Cluster)값이 들어가 있어

실질적으로 1번, 2번, 4번, 6번 클러스터에 데이터가 들어가 있다는 의미입니다.

FAT 파일시스템에서는 이런 방법을 이용해 파일을 관리하며, 이 엔트리의 용량이 12비트이면 FAT12, 16비트는

FAT16, 32비트는 FAT32라 부릅니다.

안타깝게도 FAT64는 만들면 있겠지만, 현존하지는 않으며, NTFS라는 새로운 시스템이 대체합니다.

[footnote][/footnote]참고로, NTFS는 호환을 위해 FAT와 기본적인 형태만 비슷하게 두었을 뿐, 전혀 다른 형태를 가집니다.

1번 섹터부터 마지막 섹터까지중 1섹터는 부트 레코드로 두는 점에서 FAT나 모든 파일시스템이 동일하고,

2번섹터부터 시작하는 2개의 FAT 엔트리(엔트리가 있는 물리공간의 고장을 대비해 최소 2개를 준비합니다.)가 있고,

그 후에 실제 데이터 영역이 존재하는 것이지요.

-------------------------------------------------------------------------------------------------------------------

뭔가 좀 많이 부족하네요.

다음번엔 FAT12, 16을 가지고 다시 돌아오겠습니다.