Fast File System (FFS)은 1984년 Berkeley의 Kirk McKusick이 기존 UNIX 파일 시스템(UFS, Old Unix File System)의 성능 문제점을 해결하기 위해 설계한 파일 시스템이다. FFS의 핵심은 디스크의 지역성(Locality)을 활용하여 I/O 효율을 극대화하는 것이다.Fast File System (FFS)1. FFS 탄생 배경: 기존 UNIX FS의 문제점기존 UNIX 파일 시스템(UFS)은 단순하고 깔끔했지만, 다음 두 가지 주요 문제 때문에 성능이 매우 나빴다.작은 블록 크기 (Small Block Size): UFS는 512 바이트의 작은 블록 크기를 사용했다. 이는 하나의 파일을 읽을 때 디스크 I/O 횟수가 많아져 효율성이 떨어지고, 파일 ..
디스크는 그저 거대한 블록(Block)들의 배열일 뿐이다. 파일 시스템의 목표는 이 수많은 블록들을 관리하여 사용자가 편리하게 파일과 디렉터리를 쓸 수 있게 만드는 것이다. 어떻게 맨땅(Raw Disk)에 파일 시스템을 구축하는지, 그 구조부터 살펴보자.1. 디스크 구조 잡기 (On-Disk Structures)먼저 디스크를 블록 단위로 나눈다. OSTEP에서는 블록 크기를 4KB로 가정한다. 총 64개의 블록이 있다고 칠 때, VSFS는 이를 용도별로 구획한다.데이터 영역 (Data Region): 파일의 실제 내용이 저장되는 곳이다. 디스크의 대부분을 차지한다.아이노드 테이블 (Inode Table): 파일들의 메타데이터(크기, 권한, 소유자 등)를 저장하는 아이노드(inode)들이 모여 있는 곳이다..
운영체제의 가상화(Virtualization) 파트를 지나, 이제 영속성(Persistence)의 세계로 들어왔다. 영속성의 핵심은 전원이 꺼져도 데이터가 날아가지 않게 하는 것이다. 이를 위해 운영체제는 파일 시스템(File System)이라는 인터페이스를 제공한다.1. 파일과 디렉터리: 기본 개념 (Files and Directories)파일 시스템은 데이터를 저장하기 위해 두 가지 핵심 추상화를 제공한다.파일 (File): 운영체제 입장에서 파일은 그저 바이트의 선형 배열(Linear Array of Bytes)일 뿐이다. 파일의 내용(이미지인지, 텍스트인지)은 OS가 알 바 아니다. 각 파일은 inode number(아이노드 번호)라는 저수준의 이름으로 식별된다.디렉터리 (Directory): 디..
단일 디스크는 느리고, 작고, 고장이 나기 쉽다. 그렇다면 여러 개의 디스크를 묶어서 마치 하나의 크고, 빠르고, 안전한 디스크처럼 보이게 만들면 어떨까? 이것이 바로 RAID(Redundant Array of Inexpensive Disks)의 기본 아이디어다.RAID는 운영체제(파일 시스템)에게 투명(Transparent)하다. 즉, OS는 뒤에 디스크가 몇 개가 있는지, 어떻게 묶여 있는지 신경 쓰지 않고 그냥 하나의 논리적인 블록 장치로 인식한다.RAID를 평가하는 기준은 크게 세 가지다.용량 (Capacity): N개의 디스크를 썼을 때 실제로 사용할 수 있는 공간은 얼마인가?신뢰성 (Reliability): 디스크가 몇 개 고장 나도 데이터를 잃지 않는가?성능 (Performance): 읽기/..
운영체제는 저장 장치(디스크)를 관리하기 위해 두 가지 핵심 추상화 개념을 제공한다. 바로 파일(File)과 디렉터리(Directory)다. 이들은 사용자가 데이터를 쉽게 저장하고, 이름을 붙이고, 정리할 수 있게 해준다.1. 파일 (Files)1.1. 파일의 개념정의: 파일은 단순히 바이트들의 선형 배열(Linear array of bytes)이다.특징: 운영체제는 파일의 내용(텍스트인지, 이미지인지 등)을 알지 못하며, 단지 데이터를 영구적으로 저장하고 요청 시 돌려주는 역할만 수행한다.저수준 이름 (Low-level Name): 각 파일은 아이노드 번호(inode number)라는 고유한 번호를 가진다. 사용자는 보통 파일 이름(예: foo.txt)을 사용하지만, OS 내부적으로는 이 번호를 통해 ..
운영체제의 세 번째 핵심 주제인 영속성(Persistence)은 시스템 전원이 꺼지거나 충돌이 발생해도 데이터가 영구적으로 보존되도록 보장하는 개념이다. 이 영속성은 하드웨어(I/O 장치, 디스크)와 소프트웨어(파일 시스템, 디렉터리)의 유기적인 상호작용으로 완성된다.1. 시스템 아키텍처 (System Architecture)I/O 장치를 이해하려면 먼저 이들이 시스템 전체에서 어디에 위치하는지 봐야 한다. 컴퓨터 시스템은 성능 비용에 따라 계층적인 버스(Bus) 구조를 가진다.1.1. 계층적 버스 구조왜 계층적인 구조가 필요할까? 이는 물리학적 제약과 비용 때문이다.버스는 고속일수록 길이가 짧아져야 한다. (신호 무결성 문제)고속 버스는 제작 비용이 비싸기 때문에 모든 장치를 고속 버스에 연결할 수 없..