[C 언어] mmap vs malloc

유선·2024년 4월 21일
1

CS

목록 보기
14/25
post-thumbnail

💡 mmap vs malloc

🔍 mmap

mmap은 파일을 메모리에 매핑하는 시스템 콜이다. 파일을 메모리에 직접 로드하여 접근할 수 있다.

장점

  • 대용량 파일을 효율적으로 처리할 수 있다.
  • 파일을 메모리에 직접 매핑하기 때문에 I/O 작업을 최소화할 수 있다.

단점

  • 메모리 매핑은 파일의 크기에 따라 메모리를 동적으로 사용하므로, 메모리 부족 문제가 발생할 수 있다.
  • 시스템의 가용 메모리에 영향을 줄 수 있다.

🔍 malloc

malloc은 동적으로 메모리를 할당하는 함수로, 힙(heap) 메모리에서 메모리를 할당한다.

장점

  • 프로그램 실행 중에 필요한 만큼의 메모리를 동적으로 할당할 수 있다.
  • 메모리 사용량을 관리할 수 있다.

단점

  • 메모리 할당 및 해제 과정에서 오버헤드가 발생할 수 있다.
  • 메모리 단편화 문제가 발생할 수 있다.

차이점

1. 할당 방식:

malloc: 힙(heap) 영역에서 메모리를 동적으로 할당한다. 이는 프로세스의 가용한 힙 메모리 영역 내에서 메모리 블록을 할당하고 반환한다.
mmap: 파일, 장치, 익명 메모리 등을 포함한 다양한 리소스를 매핑하여 메모리를 할당한다. 파일 매핑을 통해 파일을 메모리에 매핑하거나 익명 메모리 매핑을 통해 메모리를 할당할 수 있다.

2. 할당 크기:

malloc: 사용자가 요청한 크기의 메모리 블록을 할당한다. 주로 작은 크기의 메모리를 할당하는 데 사용된다.
mmap: 파일 매핑의 경우 파일 크기 또는 사용자가 지정한 크기에 따라 할당되며, 익명 메모리 매핑의 경우 사용자가 지정한 크기의 메모리를 할당한다. 크기가 큰 메모리를 할당하는 데 효율적이다.

3. 메모리 해제:

free: malloc으로 할당된 메모리를 해제한다.
munmap: mmap으로 할당된 메모리를 해제한다.

4. 용도:

malloc: 주로 작은 크기의 메모리 블록을 동적으로 할당하여 사용할 때 사용된다.
mmap: 큰 크기의 메모리를 할당하고자 할 때, 또는 파일을 메모리에 매핑하여 파일 입출력 성능을 향상시킬 때 사용된다.


결론 및 요약

mmapmalloc은 각각 파일을 메모리에 매핑하고 동적으로 메모리를 할당하는 방법이다.

  • mmap은 대용량 파일을 처리할 때 유용하며, 파일을 직접 메모리에 매핑하여 I/O 작업을 최소화할 수 있다.
  • malloc은 프로그램 실행 중에 동적으로 메모리를 할당할 때 유용하며, 메모리 사용량을 관리할 수 있다.
profile
Sunny Day!

0개의 댓글