강의16 - kyagrd/introCS2018spring GitHub Wiki
파일 시스템
몇 가지 기본 용어
- 파티션: 물리적인 디스크를 영역으로 구분해서 나누어 놓는 것, 혹은 그렇게 나누어 놓은 덩어리
- 볼륨: 파일시스템으로 포맷된 영역
- 주로 하나의 파티션에 해당하지만 여러 파티션에 걸쳐 있는 것도 가능
- 볼륨은 물리적 단위라기보다는 논리적 단위 (예를 들면 어떤 볼륨을 확장하거나 축소하기 위해 파티션을 변경하는 것도 가능하다.)
- 순차 접근
- 임의 접근
평평(디렉토리x) vs. 계층(디렉토리o)
- 디렉토리가 없는 평평한 파일 시스템 (flat file system) 요즘은 거의 쓰지 않는다.
- 디렉토리가 있는 계층적 파일 시스템 (hierarchical file system) 파일 시스템이라고 하면 대부분 이것을 말함.
파일 시스템이 발전해 온 역사
참고자료:
- http://web.cs.ucla.edu/classes/spring13/cs111/scribe/11c/
- https://en.wikipedia.org/wiki/Inode_pointer_structure
- http://hippolyte.tistory.com/entry/inode%ED%95%9C-%ED%8C%8C%EC%9D%BC%EC%9D%98-%EC%B5%9C%EB%8C%80-%ED%81%AC%EA%B8%B0%EB%A5%BC-%EA%B5%AC%ED%95%B4%EB%B4%85%EC%8B%9C%EB%8B%A4
여기 글자로 간단히 메모해 놓은 것만으론 내용을 이하하긴 어려우니 수업시간에 컴퓨터 모니터에 온라인 이미지 및 칠판에 그림을 그려 가며 설명한다. 장단점이 뭔지 여기에 정리해 놓지는 않았지만 수업시간에 같이 생각해 본다.
- RT-11의 파일시스템
- 평평한 파일 시스템 (볼륨 전체가 그냥 한 디렉토리)
- 파일이 물리적으로 연속된 디스크 공간에 할당
- FAT (70년대 후반)
- 볼륨 앞부분에 "파일 할당 테이블"(File Allocation Table) 영역이 있다
- 볼륨을 일정 크기 블럭으로 나누고 일련 번호가 매겨져 있다고 생각하라
- 파일 할당 테이블에 번호에 번호가 꼬리를 물고 나타나는 링크드 리스트의 형태로 파일이 구성된다
- 파일 할당 테이블을 메인 메모리에 캐시(cache)하여 파일 시스템의 성능을 향상시킬 수 있다
- 디렉토리는 크기가 고정된 특별한 형태의 파일이며 그 내용은 파일정보의 배열이다. 각각의 파일정보는 파일의 이름, 종류, 크기, 첫번째 블럭 번호를 포함한다. 이러한 파일에 대한 정보를 파일의 "메타데이타"라고 한다.
- UFS 또는 FFS (80년대 초반)
- inode = 메타데이터 + 직접 블럭 주소값(포인터) 배열 + 간접 블럭 참조 + 2중 간접 블럭 참조 + 3중 간접 블럭 참조
위와 같은 파일 시스템의 디자인을 살펴보며 기억해야 할 매우 중요한 원리 두 가지가 있다
- caching (캐싱)
- indirection (간접참조, 간접접근, 우회참조, 우회접근)