토픽 78 / 85·리눅스 커널 기술
Copy-on-Write (COW)
Copy-on-Write (COW)
데이터 복사 시 즉시 복사하지 않고 공유하다가 수정이 발생할 때만 실제 복사를 수행하는 메모리 최적화 기법으로, fork(), 가상 메모리, 파일 시스템에서 널리 사용
목적: 메모리 절약, 빠른 복사, 지연 복사, 효율적 자원 관리
특징: 읽기 공유, 쓰기 시 복사, 지연 복사, 페이지 단위 복사, 보호 비트 활용
동작 원리: ① 복사 시 포인터만 복사하고 메모리 공유 → ② 읽기 전용(Read-Only) 보호 설정 → ③ 쓰기 시도 시 Page Fault 발생 → ④ 실제 메모리 복사 → ⑤ 보호 해제 및 쓰기 진행
fork() 최적화: 부모-자식 프로세스가 메모리 공유 → 수정 시에만 복사 → fork() 빨라짐, 메모리 절약
가상 메모리: 페이지 테이블 공유, 수정 페이지만 복사, Dirty 비트 활용
파일 시스템: Btrfs, ZFS 스냅샷, 블록 레벨 COW, 빠른 스냅샷 생성
장점: 메모리 효율, 빠른 복사(포인터만), 자원 절약, fork() 최적화
단점: Page Fault 오버헤드, 쓰기 시 지연, 메모리 단편화, 복잡한 구현
적용사례: fork()(Linux), 가상 메모리, Docker 이미지 레이어, Btrfs/ZFS 스냅샷, 문자열 복사(C++)
비교: COW(지연복사/메모리절약) vs 즉시복사(간단/메모리많음)
연관: fork(), 가상 메모리, Page Fault, Btrfs, ZFS