serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/6장/6.539 / 40

6.5 · 입출력과 장치

mmap은 어떻게 파일을 메모리처럼 보이게 할까?

read를 호출하지 않고 배열처럼 파일 바이트를 읽을 수 있을까요?

mmap은 파일 구간을 가상 주소에 연결하고 접근한 페이지가 없을 때 커널이 파일 내용을 채웁니다.

먼저 생활 비유

창고를 보는 마법 창문

물건을 매번 상자로 배달받지 않고 창문 너머 선반을 바로 보는 것 같지만, 실제로는 필요한 선반이 보일 때 관리자가 준비합니다.

컴퓨터 예제로 바꾸기

큰 파일 검색

data = mmap(file);
if (data[i] == target) ...

프로그램은 메모리 주소를 읽고, 페이지가 RAM에 없으면 페이지 폴트가 커널의 파일 읽기를 유발합니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

mmap 요청

파일 구간과 가상 주소 범위를 연결합니다.

CPU · 커널 · 장치사용자 코드 · CPU운영 체제 · 커널장치 · 네트워크 · 디스크mmap 요청단계 1가상 주소 접근단계 2페이지 폴트단계 3파일 페이지 적재단계 4명령 재실행단계 5파일 페이지현재: mmap 요청

이 그림에서 기억할 한 문장

mmap은 디스크를 RAM으로 바꾸지 않고 가상 메모리 시스템이 파일 입출력을 필요 시점에 대신 수행하게 합니다.

현재 상태

이동하는 것
파일 페이지
현재 위치
mmap 요청
다음 위치
가상 주소 접근

30초 확인 문제

mmap한 파일의 모든 바이트가 즉시 RAM에 올라올까요?

처음 보는 용어 두 개

메모리 매핑
파일이나 장치를 프로세스 가상 주소 범위와 연결하는 것
페이지 폴트
가상 페이지가 준비되지 않아 커널 처리가 필요한 예외

이 절을 다 읽었다면

mmap은 디스크를 RAM으로 바꾸지 않고 가상 메모리 시스템이 파일 입출력을 필요 시점에 대신 수행하게 합니다.

← 이전 절

6.4 select·poll·epoll은 여러 연결을 어떻게 다룰까?

다음 절 →

6.6 컴퓨터 각 부분의 지연시간은 얼마나 다를까?