본문 바로가기

top chunk

(2)
Malloc(3) - Arena (glibc의 ptmalloc2) 1. Arena란? ptmalloc2는 각 스레드가 서로 간섭하지 않고, 서로 다른 메모리 영역에 액세스 할 수 있게 하는데 이러한 메모리 영역을 "Arena"라고 한다. Arena는 멀티 쓰레드 환경을 지원하기 위해 도입된 개념이다. 각 Arena는 하나 이상의 힙 메모리를 얻는다. main arena는 프로그램의 초기 힙을 사용한다. (.bss 등 직후 시작) 단일 스레드 프로세스 경우에는 하나의 Arena를 가지지만, 멀티 스레드 프로세스 경우 하나 이상의 Arena를 가진다. 서로 다른 Arena안에 존재하는 각각의 스레드는 정지하지 않고, 힙 작업을 수행할 수 있다. 모든 스레드마다 각각의 Arena를 자원고갈 문제로 갖고 있는 것은 아니며, 32bit 또는 64bit system과 system..
Malloc(1) - chunk (glibc의 ptmalloc2) 1. Memory Allocator 메모리 관리를 위해 사용되는 Allocator에는 dlmalloc, ptmalloc2, jemalloc, tcmallc, libumem 등 다양한 종류의 메모리 할당자가 존재한다. 본 글에서는 "GNU C Library"의 메모리 할당자인 ptmalloc2에 대한 내용이다. 1-1. ptmalloc2 dlmalloc코드를 기반이고 멀티 스레드에서 사용되도록 확장되었다. 한 번에 두 개 이상의 메모리 영역을 활성화하여, 멀티 스레드 애플리케이션을 효율적으로 처리할 수 있다. 복수 스레드가 동시에 malloc을 호출하면, 각 스레드는 별도의 힙 세그먼트가 생성되고 해당 힙을 유지 보수하는 데이터 구조도 분리되어 메모리에 할당된다. 즉, ptmalloc2를 사용하면 서로 다..