Always Be Wise

Project_4 :File System - Weekly I Learnd 본문

카이스트 정글 - 프로젝트/Pintos

Project_4 :File System - Weekly I Learnd

bewisesh91 2022. 2. 3. 10:34
728x90

지금까지의 프로젝트들은 CPU 가상화, 메모리 가상화와 관련한 것이었다.

그리고 이번 마지막 프로젝트, 파일 시스템은 저장 장치의 가상화와 관련한 내용이었다.

이때, 저장 장치란 HDD, SDD, USB, 마그네틱, 반도체 등 정보를 저장하기 위해 사용되는 다양한 장치들을 의미한다.

그런데 저장 장치에 정보를 저장하기 위해서는 이를 읽고 쓰는 방법이 필요하며, 파일 시스템이 그 역할을 담당한다.

컴퓨터는 파일과 디렉터리라는 두 가지 개념을 이용하여 파일 시스템을 구성하여 궁극적으로 저장 장치를 가상화한한다. 

파일과 디렉터리

파일은 읽거나 쓸 수 있는 순차적인 바이트의 배열을 의미한다.

Unix 파일 시스템의 경우, 파일 각각은 아이노드(inode)라는 고유의 저수준 이름을 갖고 있다.

파일의 아이노드를 이용하여 파일 관련 정보들을 읽고 쓸 수 있게 된다.

디렉터리는 특수한 형식의 파일이다. 디렉터리는 파일의 이름과 아이노드 넘버를 매핑한 목록을 갖고 있다.

디렉터리는 하위 디렉터리를 가질 수 있으며, 이를 통해 계층을 구성한다.

다양한 파일 시스템 구현

사용자 응용 프로그램은 다양한 유형의 파일 시스템, 저장 장치에 접근한다.

여러 종류의 파일 시스템을 하나의 공통된 인터페이스로 사용하기 위해서는 VFS(Virtual File System) 추상화가 필요하다.

 

구형 Unix File System

FAT(File Allocation Table)

FFS(Fast File System)

EXT(Extended File System)

LFS(Log-structured File System)

크래시 일관성과 저널링

파일 시스템이 가진 가장 큰 어려움은 전력 손실이나 시스템 크래시가 발생하는 상황에서도,

어떻게 안전하게 디스크 상의 내용을 갱신하는가에 대한 문제이다. 

이를 가능하게 하는 다양한 기법들이 존재하는데, 그 중 현대 시스템에서는 저널링 기법이 많이 사용된다.

 

아래는 이번 프로젝트의 주요 목표들이었다.

 

2022.01.29 - [프로젝트/Pintos] - Project_4 : File System - Introduction

2022.01.29 - [프로젝트/Pintos] - Project_4 : File System - Indexed and Extensible Files

2022.01.29 - [프로젝트/Pintos] - Project_4 : File System - Subdirectories and Soft Links

2022.01.30 - [프로젝트/Pintos] - Project_4 : File System - Buffer Cache

2022.01.30 - [프로젝트/Pintos] - Project_4 : File System - Synchronization

 

Comments