UNIX 블록 버퍼 캐시 (Block Buffer Cache)
Jan 23, 2026 · Updated Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”블록 버퍼 캐시(Block Buffer Cache)는 디스크 블록을 메인 메모리에 캐싱하여 디스크 I/O 횟수를 줄이는 커널 메커니즘이다. 디스크 접근은 메모리보다 수천~수만 배 느리므로, 최근 접근한 블록을 메모리에 유지하면 재접근 시 빠르게 서비스할 수 있다(시간적 지역성 활용).
동작 원리
섹션 제목: “동작 원리”버퍼 헤더 구조
섹션 제목: “버퍼 헤더 구조”각 버퍼 헤더는 장치 번호, 블록 번호, 메모리 포인터, 상태 플래그를 가진다.
캐시 내부 구조
섹션 제목: “캐시 내부 구조”블록 버퍼 캐시 구조
해시 테이블
장치+블록 번호 빠른 검색
Free Lists
LRU 리스트 AGE 리스트 EMPTY 리스트
- LRU 리스트: 최근 사용된 버퍼 (LRU 순서)
- AGE 리스트: 최근 사용 안 된 버퍼 또는 유효하지 않은 내용
- EMPTY 리스트: 물리 메모리가 연결되지 않은 헤더
동작 흐름
섹션 제목: “동작 흐름”- Read: 캐시 히트 시 즉시 반환, 미스 시 디스크에서 로드
- Write: 캐시에 쓰고 dirty 표시, 나중에 디스크로 flush (write-back)
sync(): 30초마다 dirty 버퍼를 디스크에 기록
블록 버퍼 캐시는 “책상 위 자료”와 같다. 자주 보는 문서는 책상(메모리)에 두고, 덜 보는 건 서랍(디스크)에 보관한다.
read() 캐시 미스 흐름
섹션 제목: “read() 캐시 미스 흐름” 1 해시 테이블 검색
장치+블록 번호로 검색 (히트 시 버퍼에서 즉시 복사) 2 버퍼 할당
캐시 미스 → AGE/LRU 리스트에서 빈 버퍼 할당 3 디스크 로드
디스크에서 블록을 버퍼로 읽어옴 (느림) 4 데이터 복사
버퍼에서 사용자 공간으로 복사 - 디스크 I/O 대폭 감소, 쓰기 지연(write-back)으로 성능 향상
- 디스크 드라이버가 요청 정렬 가능 → seek 최적화
- 단점: 시스템 크래시 시 dirty 버퍼 손실 위험, 동기 쓰기 필요 시 성능 저하
관련 개념
섹션 제목: “관련 개념”- 버퍼링 (Buffering) - 속도 차이 해소를 위한 임시 메모리 영역으로, 블록 버퍼 캐시의 기반 개념
- 캐시 (Cache) - 자주 사용되는 데이터를 빠른 저장 장치에 복사하는 일반적 메커니즘
- UNIX 파일 디스크립터 - read()/write() 시스템 콜이 블록 버퍼 캐시를 경유하여 처리됨
- VFS (Virtual File System) - 파일 시스템 추상화 계층으로, 블록 버퍼 캐시와 함께 I/O 성능을 향상
- 저널링 파일 시스템 - dirty 버퍼 손실 문제를 해결하기 위한 로그 기반 복구 기법