파일 시스템이 파일과 디렉터리를 보조기억장치에서 어떻게 할당하고 접근하는지,
대표적인 파일 시스템인 FAT 파일 시스템과 유닉스 파일 시스템을 알아보자
파티셔닝과 포매팅
-
윈도우에서 보조기억장치(ex: SSD,하드디스크)를 사용하기 위해서는 파티셔닝과 포맷 작업을 거쳐야 사용할 수 있었다.
-
파티셔닝은 저장 장치의 논리적인 영역을 구획하는 작업을 의미한다.
-
파티셔닝을 통해 나뉘어진 영역을 파티션이라고 한다.

-
포매팅은 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업을 의미한다.

-
포매팅을 할 때, 파일 시스템이 결정된다.
-
파티션마다 다른 파일 시스템을 설정할 수도 있다.
파일 할당 방법
- 운영체제는 파일과 디렉터리를 블록단위로 읽고 쓴다.
- 파일을 보조기억장치에 할당하는 방법에는 연속 할당과 불연속 할당이 있다.
- 또한, 불연속 할당에는 연결 할당과 색인 할당이 있다.
연속 할당
- 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식이다.
- 할당된 파일에 접근하기 위해서
파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다.
- 구현은 단순하지만, 외부 단편화 문제가 발생한다.

불연속 할당
연결 할당(불연속 할당)
- 연속 할당의 문제를 해결할 수 있는 방식을 연결 할당이라고 한다.
- 각 블록 일부에 다음 블록 주소를 저장하여 각 블록이 다음 불록을 가리키는 형태로 할당되는 방식이다.
- 그러나
반드시 첫 번째 블록부터 하나씩 차례로 읽어야 한다., 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.라는 단점이 있다.
- 이러한 문제를 해결하기 위해서 이를 조금 변형새서 하용하는 파일 시스템이 FAT 파일 시스템이다.

색인 할당(불연속 할당)
- 색인 할당은 파일의 모든 불록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식이다.
- 색인 블록만 알면 해당 파일 데이터에 접근할 수 있다. 그러기 때문에 색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에
파일 이름과 더불어 색인 블록 주소를 명시한다.
- 색인 할당을 기반을 만들어진 파일 시스템이 유닉스 파일 시스템이다.

파일 시스템 살펴보기
- USB 메모리, SD 카드 등의 저용량 저장 장치에서 사용되는 FAT 파일 시스템과 유닉스 계열 운영체제에서 사용되는 유닉스 파일 시스템이 대표적이다.
FAT 파일 시스템

-
연결 할당의 단점을 보완한 파일 시스템이다.
-
각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태로 관리하는 방식이다.
-
이러한 테이블을 파일 할당 테이블(FAT)이라고 부른다.
-
FAT 파일 시스템은 버전에 따라 FAT12, FAT16, FAT32가 있으며, 뒤의 숫자는 블록을 표현하는 비트 수를 의미한다.
-
FAT 파일 시스템으로 포맥하면 해당 파티션이 다음과 같이 구성된다.

-
FAT 파일 시스템에서의 디렉터리들은 아래와 같은 형식으로 블록에 저장된다.

유닉스 파일 시스템
- 색인 할당 기반 파일 시스템이다.
- 색인 할당은 색인 블록 기반으로 파일의 데이터 블록들을 찾는 방식이다.
- 이러한 색인 블록을 i-node라고 부른다.
- i-node에는 파일 속성 정보와 열다석 개의 블록주소가 저장될 수 있다.

- 그러나 i-node의 크기는 유한 하기 때문에 큰 파일의 경우에는 i-node 하나만으로는 파일의 데이터 블록을 모두 가리킬 수 없다.
- 이러한 문제를 해결하기 위해서
블록 주소 중 12개에는 직접 블록 주소를 저장한다., '첫째' 내용으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소를 저장한다., '둘째'내용으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소를 저장한다., '셋째' 내용으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소를 저장한다.라는 방식을 통해 해결한다.
(1) 블록 주소 중 12개에는 직접 블록 주소를 저장한다.
- 파일 데이터가 저장된 블록을 직접 블록이라고 한다.
- 이것으로 파일 데이터 블록을 모두 가리킬 수 있다면, 추가적인 작업이 필요하지 않는다.

(2) '첫째' 내용으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소를 저장한다.
- 파일 데이터가 저장된 블록이 아닌 파일 데이터를 저장한 블록 주소가 저장된 블록을 단일 간접 블록이라고 한다.

(3) '둘째'내용으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소를 저장한다.
- 데이터 블록 주소를 저장하는 블록 주소가 저장된 블록을 이중 간접 블록이라고 한다.
- 즉, 단일 간접 블록들의 주소를 저장하는 블록을 의미한다.

(4) '셋째' 내용으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소를 저장한다.
- 이중 간접 블록 주소가 저장된 블록을 삼중 간접 블록이라고 한다.
- 삼중 간접 블록까지 이용한다면 웹만한 크기의 파일은 모두 표현할 수 있다.

유닉스 파일 시스템의 디렉터리 엔트리는 다음과 같다.

유닉스 파일 시스템에서 파일을 읽는 과정
