[운영체제][저장장치관리] 저장장치와 입출력(Storage & Input/Output) #4 파일 시스템 구현

2022. 7. 28. 13:20OperatingSystem

1. 파일 시스템의 할당 방법

파일 시스템에서 파일 데이터를 디스크에 할당하는 방법으로 3가지 방식이 존재합니다.

  1. 연속 할당(Contiguous Allocation)
  2. 연결 할당(Linked Allocation)
  3. 색인 할당(Indexed Allocation)

 

2. 연속 할당(Contiguous Allocation)

연속 할당은 파일을 디스크의 빈공간에 연속되게 저장하는 방식입니다. 디렉터리에는 파일의 시작 위치와 길이에 대한 정보를 저장하면 전체를 탐색할 수 있습니다.

이 방식은 연속적으로 저장되어 잉쓰므로 한번의 탐색으로 많은 양을 전송할 수 있습니다. 그리고 직접 접근(Radnom Access)이 가능합니다. 하지만 외부 단편화가 발생하며, 파일의 크기가 크면 저장할 수 없는 경우가 있습니다. 파일이 커질 가능성을 고려해서 미리 큰 공간을 할당하면 내부 단편화가 발생할 수도 있습니다.

 

3. 연결 할당(Linked Allocation)

연속 할당(Contiguous Allocation)의 문제는 외부 단편화와 큰 파일에 대한 압축의 필요성이 있습니다. 이러한 문제를 해결하기 위한 연결 할당(Linked Allocation)은 위 문제를 해결합니다.

 

연결 할당 방식은 연속적으로 할당하지 않고, 빈 위치면 자유롭게 할당할 수 있습니다. 그리고 다음 읽어야할 위치를 연결 리스트처럼 포인터로 가리키는 방식입니다. 따라서 디렉토리에는 파일이 시작하는 위치와 끝나는 위치만 저장합니다.

하지만 연결 할당의 단점은 오직 순차적인 접근 파일에 대해서만 효율적으로 사용될 수 있고 파일의 i번째 블록을 탐색하기 위해서는 파일의 시작 부분부터 시작하여 탐색해야 한다는 점입니다.

 

FAT(File Allocation Table)

  • 파일 할당 테이블은 연결 할당을 개선한 버전으로써 파일 할당 테이블을 이용하여 효율적인 접근을 수행합니다.
  • 각 볼륨(Volume)의 시작 부분에 있는 저장소 영역은 테이블을 포함하도록 따로 설정됩니다.
  • 테이블에는 각 블록에 대해 하나의 항목이 있으며 블록 번호로 인덱싱됩니다.
  • 즉, 포인터를 별도의 위치에 보관하여 신뢰성 문제와 공간 효율성 문제를 해결합니다.

 

4. 색인 할당(Indexed Allocation)

색인 할당은 한 블록에 하나의 파일에 대한 데이터의 index들을 모두 저장하는 방식입니다. 따라서 디렉터리에는 해당 블록의 위치만 담게 됩니다.

5. 빈공간 관리(Free-Space Management)

빈 디스크 공간의 트랙을 유지하기 위해서 시스템은 빈공간 리스트(free-space list)를 유지보수합니다.

 

References

source code : https://github.com/yonghwankim-dev/OperatingSystem_Study
Operating System Concepts, 10th Ed. feat. by Silberschatz et al.
[인프런] 운영체제 공룡책 강의
[운영체제(OS)] 11. 파일 시스템(File System)