디스크에 파일을 할당(저장)하는 방법에 대해 알아보자.
3가지 방법을 알아볼 것이고, 우리는 이 중 한 방법을 응용한 FAT 시스템을 활용하여 pintos과제를 진행할 것이다.
아래 디스크 그림에서 작은 네모 한 칸이 섹터(pintos 과제에서는 512byte)로 생각하면 된다. 작은 파일은 한 섹터보다 작을 수도 있겠지만, 최소 1섹터 이상 공간을 할당받게 되는 것이다. 반면, 큰 파일은 여러 섹터를 차지하게 된다.
1. 연속 할당 방법(Contiguous Allocation)
파일을 디스크 상에 연속적으로 할당하는 방법이다.
장점 :
- Fast I/O가 가능하다.(한 번의 seek/rotation으로 많은 bytes을 I/O할 수 있다.)
- 원하는 섹터에 직접 접근이 가능하다.(ex : tr 파일의 2번째 섹터에 접근해라 -> 15번 섹터에 바로 접근 가능)
단점 :
- 외부 단편화
- 파일 크기는 유동적으로 변할텐데, File Growth가 어렵다.
2. 연결 할당 방법(Linked Allocation)
빈 공간을 찾아서 다음 섹터를 연결하며, 디스크 공간을 할당한다. 이 방법을 변형한 FAT를 이용하여 이번 과제를 진행할 것이다.
장점 :
- 연속 할당의 단점인 외부 단편화를 없앨 수 있다.
- File Growth가 가능하다.
단점 :
- 원하는 섹터에 직접 접근이 불가능하다.
- Reliability(신뢰성 문제) : 중간 섹터에 bad sector가 발생하면, 연결이 끊겨서 제대로 제대로 된 파일 접근이 불가능하다.(파일 불량)
3. 색인 할당(Indexed Allocation)
아래 그림처럼, 일정 섹터(아래 그림에서는 19번ㄴ)에 섹터 시작~끝 정보를 담아두어 index화 해둔다. 이는, 연속할당의 단점와 연결할당의 단점을 어느정도 보완해준다.
장점 :
- 외부 단편화도 발생하지 않고,
- 원하는 섹터에 직접 접근도 가능하다.
단점 :
- 아무리 작은 파일이라도 위의 그림에서 19번 섹터와 같은 섹터가 반드시 필요하다.
위에도 말했듯 project4에서는 연결 할당의 변형인 FAT를 활용하여 파일시스템을 구현할 것이다.