ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION1078 / 1500
운영체제난이도 중하5분 답변 목표 · 보강본

큰 파일을 mmap하면 read보다 항상 빠르고 메모리 복사도 없어지나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

mmap은 파일을 가상 주소 공간에 매핑해 접근하게 하지만 페이지 폴트·page cache·TLB·회수 비용은 남습니다. 명시적인 read 호출을 줄일 수 있어도 모든 작업에서 더 빠르다는 보장은 없습니다.

동작 원리와 전제

처음 접근한 페이지는 fault와 디스크 읽기가 필요할 수 있고 무작위 접근은 readahead 이점이 작습니다. 큰 파일을 매핑했다고 전체가 RAM에 즉시 올라오는 것은 아닙니다. 주소 공간과 실제 상주 메모리를 구분합니다.

선택과 실패 처리

쓰기 매핑의 공유·개인 모드와 flush·내구성 의미를 확인합니다. 다른 프로세스가 파일을 축소하면 접근 오류가 날 수 있어 수명과 크기 변경을 통제합니다. mapped 데이터 구조를 포인터 그대로 영구 저장하지 않습니다.

구체적인 사례와 검증

순차 스캔에서는 큰 read 버퍼와 readahead가 효율적일 수 있고, 임의 접근에서는 mmap이 호출을 줄여도 많은 page fault와 TLB miss를 만들 수 있습니다. 두 방식 모두 OS page cache의 영향을 받으므로 cold·warm 실험을 나눕니다. 큰 매핑의 주소 범위가 실제 물리 메모리 사용량과 같지 않다는 점도 중요합니다. 외부 프로세스가 파일 크기를 줄이는 동안 매핑을 접근하면 정상적인 read 오류와 다른 신호·예외가 발생할 수 있어 파일 수명을 통제합니다. mmap을 네트워크 입력 파싱의 안전한 타입 변환처럼 쓰지 않고 데이터 길이·정렬·버전 검증을 유지합니다.

순차·무작위·콜드·웜 캐시·메모리 압력과 파일 변경을 시험합니다. syscall 수뿐 아니라 fault·RSS·I/O·p99를 비교합니다. read 버퍼링과 mmap의 선택은 접근 패턴과 오류 처리·수명 복잡성까지 포함해야 합니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: mmap은 파일을 가상 주소 공간에 매핑해 접근하게 하지만 페이지 폴트·page cache·TLB·회수 비용은 남습니다.
  • 선택 조건: 쓰기 매핑의 공유·개인 모드와 flush·내구성 의미를 확인합니다.
  • 검증 기준: 순차·무작위·콜드·웜 캐시·메모리 압력과 파일 변경을 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • mmap은 디스크 I/O와 페이지 폴트·복사 비용을 항상 없앤다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 매핑 접근이 느릴 때 minor·major fault와 실제 디스크 읽기를 어떻게 구분하나요?
  • 객체를 반환·해제했는데 RSS가 남으면 공유·캐시·allocator 보관을 어떻게 확인하나요?
  • 큰 가상 주소 공간의 불규칙 접근에서 주소 변환 cache miss는 어떤 비용을 만드나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기