콘텐츠로 이동

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 버퍼를 디스크에 기록

블록 버퍼 캐시는 “책상 위 자료”와 같다. 자주 보는 문서는 책상(메모리)에 두고, 덜 보는 건 서랍(디스크)에 보관한다.

1 해시 테이블 검색
장치+블록 번호로 검색 (히트 시 버퍼에서 즉시 복사)
2 버퍼 할당
캐시 미스 → AGE/LRU 리스트에서 빈 버퍼 할당
3 디스크 로드
디스크에서 블록을 버퍼로 읽어옴 (느림)
4 데이터 복사
버퍼에서 사용자 공간으로 복사
  • 디스크 I/O 대폭 감소, 쓰기 지연(write-back)으로 성능 향상
  • 디스크 드라이버가 요청 정렬 가능 → seek 최적화
  • 단점: 시스템 크래시 시 dirty 버퍼 손실 위험, 동기 쓰기 필요 시 성능 저하
  • 버퍼링 (Buffering) - 속도 차이 해소를 위한 임시 메모리 영역으로, 블록 버퍼 캐시의 기반 개념
  • 캐시 (Cache) - 자주 사용되는 데이터를 빠른 저장 장치에 복사하는 일반적 메커니즘
  • UNIX 파일 디스크립터 - read()/write() 시스템 콜이 블록 버퍼 캐시를 경유하여 처리됨
  • VFS (Virtual File System) - 파일 시스템 추상화 계층으로, 블록 버퍼 캐시와 함께 I/O 성능을 향상
  • 저널링 파일 시스템 - dirty 버퍼 손실 문제를 해결하기 위한 로그 기반 복구 기법