본문 바로가기
computer

시스템 프로그래밍: mmap

by 유순이 2021. 7. 9.

동적 메모리 생성

malloc()

 

메모리 해제

free()

 

파일 처리 성능 개선 기법 - 메모리에 파일 매핑

void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)

 

prot

보호모드

 

flags

메모리 주소 공간 설정

 

fd

device file에 대한 descriptor (어떤 파일?)

int fd = open(filepath, 0_RDWR, (mode_t)0600);

 

offset

 


동작 방식

 

  1. mmap 실행 시, 가상 메모리 주소에 file 메모리 매핑 - (가상 메모리)
  2. 해당 메모리 접근 시, - (요구 페이지, lazy allocation)
    1. 페이지 폴트 인터럽트
    2. OS에서 file data를 복사하여 물리 데이터 페이지에 넣는다.
  3. 메모리 read 시, 해당 물리 페이지 데이터를 읽는다.
  4. 메모리 write 시, 해당 물리 페이지 데이터를 수정 후, 페이지 상태 flag 중 dirty bit를 1로 수정한다.
  5. 파일 close 시, 물리 페이지 데이터가 file에 업데이트 된다.

장점

  • 메모리 변수 처럼 데이터에 접근할 수 있다.
  • 파일을 처리하기 위한 lseek() 를 사용하지 않고 간단한 포인터 탐색이 가능하다.

단점

  • 페이지 단위로 매핑하기 때문에, 데이터 사이즈와 관련 없이 페이지 크기로 메모리 할당된다. >> 공간 낭비

'computer' 카테고리의 다른 글

데이터 표현 및 단위  (0) 2021.07.12
시스템 프로그래밍: munmap  (0) 2021.07.10
스레드 :  (0) 2021.07.08
쉘 스크립트: 정리  (0) 2021.07.08
쉘 스크립트: ping  (0) 2021.07.08

댓글