Table of contents
들어가며
-
이번 장에서는 vsfs(Very Simple File System) 라고 하는 간단한 파일 시스템 구현을 다룬다.
-
이 file system은 Unix 파일 시스템을 단순화한 것, 하기 내용들을 소개한다.
- 디스크 자료 구조 (on-disk structure)
- 접근 방법
- 다양한 파일 시스템들의 정책들
-
파일 시스템은 순수한 software.
-
이점이 이 책의 앞 부분에서 다룬 CPU 가상화, 메모리 가상화 부분과 다른 점.
-
CPU 가상화나 메모리 가상화에서는 하드웨어가 필요하다.
- 특권모드로의 변환을 위한 명령어, 페이징을 위한 하드웨어 등이 그것.
-
파일 시스템에서는 성능 개선을 위해 하드웨어를 추가하지 않을 것이다. (물론, 잘 동작 하는 파일 시스템을 만들려면 장치 특성을 반영해야 한다.)
-
먼저 이번 장에서 간단한 파일 시스템 (vsfs) 을 사용하여 개념을 소개하고, 파일 시스템에 대한 실제 사례들을 다루면서 현실에서는 어떻게 동작하는지 이해해 보도록 하겠다.
핵심 질문: 어떻게 간단한 File System을 만들 것인가?
간단한 파일 시스템은 어떻게 만들 수 있을까?
디스크 위에는 어떤 data structure가 필요할까?
그런 data structure는 어떤 정보를 추적해야 할까?
그 data structure는 어떻게 접근돼야 할까?
생각하는 방법
- 파일 시스템에 대해 학습할 때, 두 가지 측면에서 접근할 것 권장.
- 그 두 측면을 다 이해하면, 파일 시스템이 기본적으로 어떻게 동작하는지 이해하게 된다.
- 첫 번째는 파일 시스템의 자료 구조이다.
- 즉, 파일 시스템이 자신의 데이터와
- 메타데이터를 관리하기위애 디스크 상에 어떤 종류의 자료 구조가 있어야 하겠는가?
- 우리가 보게 될 첫 파일 시스템 (vsfs를 포함하여)은 블럭과 다른 객체들을 배열과 같은 간단한 자료 구조로 표현.
- 두 번째는 **접근 방법(access method)**이다.
- 프로세스가 호출하는
open()
,read()
,write()
등의 명령어들은 파일 시스템의 자료 구조와 어떤 관련이 있을까? - 특정 시스템 콜을 실행할 때에 어떤 자료구조들이 읽히는가?
- 어떤 것들이 쓰일까?
- 이 모든 과정이 얼마나 효율적으로 동작하는가?
- 프로세스가 호출하는
- 파일 시스템의 자료 구조와 접근 방법을 이해하였다면, 실제 동작 방식에 대한 개념 모델을 제대로 정립하는 것이다.
- 그것이 시스템적 사고 방식의 핵심이다.
- 우리가 파일 시스템을 처음으로 구현해 갈 때, 개념적 모델을 잘 만들려고 노력하기 바란다.
전체 구성
- 이제 vsfs 파일 시스템의 자료 구조에 대해 디스크 상의 전체적인 구성을 개발해 보자.
- 가장 먼저 해야 할 일은 디스크를 **블럭(block)**들로 나누는 것이다.
- 간단한 파일 시스템은 단일 블럭 크기만 사용하기 때문에, 여기서도 그렇게 한다.
- 일반적으로 사용되는 크기인 4KB를 사용한다.
- 파일 시스템을 만들려는 디스크 파티션 구조는 단순하다.
- 4KB 블럭들로 나열되어 있다.
- N개의 4KB 블럭의 크기를 갖는 파티션에서 블럭은
0
부터N − 1
까지의 주소를 갖고 있다. - 블럭이 64개 있는 작은 디스크를 가정하자.
- 파일 시스템을 생성하기 위해서, 이들 블럭에 어떤 것을 저장할지 생각하자.
- 가장 먼저 떠오르는 것은 사용자 데이터이다.
- 사실, 파일 시스템의 대부분의 공간은 사용자 데이터로 이루어져 있다. (또한 그렇게 되어야 한다.)
- 사용자 데이터가 있는 디스크 공간을 데이터 영역(data region) 이라고 하자.
- 간단하게 64개의 디스크 블럭 중, 마지막 56개의 블럭처럼 디스크의 일정 부분을 데이터 영역으로서 확보하자. (하기 그림 확인.)