동적 메모리 생성
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
동작 방식
- mmap 실행 시, 가상 메모리 주소에 file 메모리 매핑 - (가상 메모리)
- 해당 메모리 접근 시, - (요구 페이지, lazy allocation)
- 페이지 폴트 인터럽트
- OS에서 file data를 복사하여 물리 데이터 페이지에 넣는다.
- 메모리 read 시, 해당 물리 페이지 데이터를 읽는다.
- 메모리 write 시, 해당 물리 페이지 데이터를 수정 후, 페이지 상태 flag 중 dirty bit를 1로 수정한다.
- 파일 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 |
댓글