강의16 - kyagrd/introCS2018spring GitHub Wiki

파일 시스템

몇 가지 기본 용어

  • 파티션: 물리적인 디스크를 영역으로 구분해서 나누어 놓는 것, 혹은 그렇게 나누어 놓은 덩어리
  • 볼륨: 파일시스템으로 포맷된 영역
    • 주로 하나의 파티션에 해당하지만 여러 파티션에 걸쳐 있는 것도 가능
    • 볼륨은 물리적 단위라기보다는 논리적 단위 (예를 들면 어떤 볼륨을 확장하거나 축소하기 위해 파티션을 변경하는 것도 가능하다.)
  • 순차 접근
  • 임의 접근

평평(디렉토리x) vs. 계층(디렉토리o)

  • 디렉토리가 없는 평평한 파일 시스템 (flat file system) 요즘은 거의 쓰지 않는다.
  • 디렉토리가 있는 계층적 파일 시스템 (hierarchical file system) 파일 시스템이라고 하면 대부분 이것을 말함.

파일 시스템이 발전해 온 역사

참고자료:

여기 글자로 간단히 메모해 놓은 것만으론 내용을 이하하긴 어려우니 수업시간에 컴퓨터 모니터에 온라인 이미지 및 칠판에 그림을 그려 가며 설명한다. 장단점이 뭔지 여기에 정리해 놓지는 않았지만 수업시간에 같이 생각해 본다.

  1. RT-11의 파일시스템
    • 평평한 파일 시스템 (볼륨 전체가 그냥 한 디렉토리)
    • 파일이 물리적으로 연속된 디스크 공간에 할당
  2. FAT (70년대 후반)
    • 볼륨 앞부분에 "파일 할당 테이블"(File Allocation Table) 영역이 있다
    • 볼륨을 일정 크기 블럭으로 나누고 일련 번호가 매겨져 있다고 생각하라
    • 파일 할당 테이블에 번호에 번호가 꼬리를 물고 나타나는 링크드 리스트의 형태로 파일이 구성된다
    • 파일 할당 테이블을 메인 메모리에 캐시(cache)하여 파일 시스템의 성능을 향상시킬 수 있다
    • 디렉토리는 크기가 고정된 특별한 형태의 파일이며 그 내용은 파일정보의 배열이다. 각각의 파일정보는 파일의 이름, 종류, 크기, 첫번째 블럭 번호를 포함한다. 이러한 파일에 대한 정보를 파일의 "메타데이타"라고 한다.
  3. UFS 또는 FFS (80년대 초반)
    • inode = 메타데이터 + 직접 블럭 주소값(포인터) 배열 + 간접 블럭 참조 + 2중 간접 블럭 참조 + 3중 간접 블럭 참조

위와 같은 파일 시스템의 디자인을 살펴보며 기억해야 할 매우 중요한 원리 두 가지가 있다

  • caching (캐싱)
  • indirection (간접참조, 간접접근, 우회참조, 우회접근)