파일시스템이란 파일에 대한 전반적인 관리를 할 수 있는 체계라고 보면 된다. 즉, 디스크(disk)와 파일간의 연결, 디렉토리(folder)와 파일간의 연결 등을 관리해주는 방법이라고 생각하면 된다.
특히, pintos에서는 file의 metadata라 할 수 있는 inode와 inode_disk의 개념이 굉장히 중요하다.
디스크는 메모리와 달리 휘발성 저장장치가 아니다. 요새는 ssd를 많이 사용해서, 아래 (a) 그림의 hdd와는 전혀 다른구조이지만 이번 과제 및 sector와 block, track 등의 개념을 쉽게 보기 위해 아래 그림을 참고하자.
이번 project4에서는 DISK_SECTOR_SIZE가 512bytes이다.
앞으로 다루게 될 sector와 cluster는 원래 아래 그림처럼 여러개의 sector를 합친 것을cluster라고 부른다. 하지만, 이번 과제에서는 sector의 크기와 cluster의 크기를 모두 512bytes로 한다.
"이름"을 통해 접근하는 단위로, 디스크(disk)에 저장한다. 우리가 흔히 사용하는 그 '파일'이다. 예를 들어, 우리가 어떤 파일을 만들고, 수정하고, 저장하고, 다시 여는 일련의 작업들을 file system에서 해주는 것이라고 생각하면 된다. 거기에 폴더(디렉토리)를 생성하고 위치를 변경하는 등의 작업도 포함이다.
모든 운영체제에서 그런지는 모르겠지만 pintos에서는 디렉토리(혹은 폴더)도 file의 특성을 갖고 있다. 우리는 이미 앞선 프로젝트2 등에서 filesys.c에 있는 함수들을 사용했다(고 할 수 있다).