Mmap과 malloc의 차이점
mmap vmalloc에있는 함수 집합을 통해 C 프로그래밍 언어로 메모리를 할당하는 것을 가리 킵니다
C에는 동적 메모리가 있으며, 이는 C 표준 라이브러리에있는 함수 집합을 통해 C 프로그래밍 언어로 메모리를 할당하는 것을 가리 킵니다. 이들 중 하나는 메모리 할당을 가리키는 malloc입니다. UNIX 시스템에는 고유 한 I / O가있는 메모리 매핑 시스템을 나타내는 mmap이 있습니다. 이 두 가지 (mmap 및 malloc)는 액면가에서 동일한 기능을 수행하지만 추가 조사는 약간의 차이점을 나타냅니다. 기능상의 차이점은 다음과 같습니다.
차이점우선, 이용 가능한 기억의 현저한 둔화가 있음을 나타내는 어떤 증거가 있는지를 확인하는 것이 중요하다. 이것은 메모리 관리에 대한 프로그램 성능 측정을 통해 수행됩니다.
주 메모리 할당 인터페이스는 malloc이다. 이것은 C 라이브러리에서 가장 큰 것입니다. 관리 코드의 일부는 mmap입니다. malloc이 실행되면 사용 가능한 모든 시스템 기능을 수집합니다. 커널을 통해 추가 시스템 기능을 동원 할 수 있습니다. 이는 시스템이 만족스러운 메모리 할당을 보장하기 위해 사용하는 메모리 관리 전략 중 하나입니다. 그러나이 과정은 간단하지는 않습니다. 메모리 할당이 엉망으로되어 성능이 저하 될 수있는 간단한 프로그램을 사람들이 만들지 못하게하는 유일한 이유 때문에 복잡해졌습니다.
Malloc은 일반적으로 대부분의 메모리 관리 프로세스에서 작동합니다. 프로그램에 추가 메모리가 필요한 경우 OS에서 빌려옵니다. 반면에 Mmap은 커널 토지로 변환하는 컨텍스트 스위치를 사용합니다.
Mmap은 응용 프로그램이 제공하는 응답 속도를 높이는 데 사용할 수 있습니다. 그러나 응용 프로그램이 원활하게 실행될 수 있도록 일부 바이트를 페이지에 희생 시키므로이 방법은 바람직하지 않습니다. 처음에는 데이터 내용이 작아 보일 수도 있지만, 수많은 응용 프로그램을 실행하려고 할 때 데이터 내용을 추정하면 시스템 속도가 훨씬 느려질 수 있습니다. 성능 및 리소스 사용량을 측정 한 후 시스템에서 실행중인 모든 응용 프로그램의 데이터 사용을 철저히 평가해야합니다.실행중인 응용 프로그램의 수명이 표시 될 수 있다면 더 좋아질 수 있습니다. 메모리 할당을 위해 mmap을 사용하면 청크로 데이터를 할당하고 할당을 해제하는 데 비용이 많이 든다는 단점이 있습니다. 이는 데이터가 여러 영역으로 분할되고 mmap이 시스템 호출을하지 못하기 때문입니다.
mmap에서 사용 된 메모리가 OS로 즉시 반환되기 때문에 Mmap은 malloc보다 유리합니다. malloc에 의해 사용 된 메모리는 데이터 세그먼트가 끊어지지 않는 한 절대 반환되지 않습니다. 이 메모리는 특별히 재사용 할 수 있도록 유지됩니다.
요약
'malloc'은 주 메모리 할당 지점을 의미합니다.
mmap 시스템은 여러 메모리 페이지의 매핑을 수용 할 수있는 응용 프로그램 주소에서 사용되지 않는 영역을 찾기 위해 커널을 호출하고 요청합니다.
Mmap은 권장되지 않습니다. 사용 가능한 메모리를 나눌 때 메모리를 할당하고 시스템 호출을 할 수 없습니다. malloc보다 mmap의 이점은 재사용되는 malloc 메모리와는 달리 메모리의 가용성입니다.