개요
파일 시스템File System이란 컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록, 유지 및 관리하는 방법이다. 저장 매체에는 수많은 파일이 있기 때문에, 이런 파일들을 관리하는 방법을 말한다.
특징
- 커널 영역에서 동작한다
- 파일 CRUD 기능을 원활히 수행하기 위한 목적
- 계층적 디렉터리 구조를 가진다
- 디스크 파티션마다 하나의 파일 시스템이 할당된다.
역할
- 파일 관리
- 보조 저장소 관리
- 파일 무결성 메커니즘
- 접근 방법 제공
개발 목적
- 하드 디스크와 메인 메모리 속도 차이를 줄이기 위함
- 파일 관리
- 하드디스크 용량 효율적 이용
구조
- 메타 영역: 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간 정보, 삭제 유무 등의 파일 정보
- 데이터 영역: 파일의 데이터
접근 방법
1. 순차 접근Sequential Access
가장 간단한 접근 방법으로, 대부분 연산은 read와 write이다.
현재 위치를 가리키는 포인터에서 읽기/쓰기 시스템 콜이 발생할 경우, 포인터를 앞으로 보내면서 read와 write를 진행한다. 뒤로 돌아갈 땐 지정한 offset만큼 되감기를 해야한다.
테이프 모델에 기반을 두고 있다.
2. 직접 접근Direct Access
직접 접근 또는 상대 접근이라 칭한다.
디스크 모델에 기반을 두며, 무작위 파일 블록에 대한 임의 접근Random Access을 허용한다.
대규모 정보를 즉각적으로 접근할 때 유용하기 때문에 데이터베이스에 활용된다.
추가로, 현재 위치를 가리키는 cp 변수만 유지하면 순차 접근과 같은 동작을 구현할 수 있다.
3. 기타 접근 방법
직접 접근 방법에 기반을 두고 색인index을 구축한다. 크기가 큰 파일을 입출력 탐색할 수 있게 도와준다.
실제 파일 시스템
- FAT 파일 시스템: USB 메모리, SD 카드 등의 저용량 저장 장치에서 사용됨
- 유닉스 파일 시스템: 유닉스 계열 운영체제에서 사용됨
참고 자료
- gyoogle/tech-interview-for-developer, File System.md, 2020.09.09, https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/File%20System.md
- Noep’s Posts, [공룡책] 10장 파일시스템, 2016.02.23, https://noep.github.io/2016/02/23/10th-filesystem/