C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[44256] Re:혹시 메모리 풀이라는거 사용하 보신분
김윤동.제라툴 [zeratul] 1259 읽음    2006-03-25 09:46
하니 님이 쓰신 글 :
: 제가 요번에  멀티 스레드 프로그램을 개발하고 있는데요..
: 계속 Alloc하고 free 하다보니 속도가 너무 느려지는 것 같아서..
: 메모리 풀이라는거 한번 사용해 볼라구 하는데요...
: 아는게 하나도 없네요...
: 인터넷에서 뒤지고 뒤져서 hoard 라든가 boost pool ,vmempool 이라는걸 찾았는데..
: hoard는 찾았는데 가져다 쓰는 방법을 몰라서 포기했습니다.
: 혹시 메모리 풀 사용해 보신분 좀 도와 주시면 안될까요??
: 테스트 소스라도 좀 ... 염치 불구하구 부탁드립니다.
: ps:
: 스레드 풀이라는것도 있는거 같던데...
: 이건 또 뭐하는거죠??

hoard 나 boost 같은경우 Memory pool 이 굉장히 잘되어 있는것으로 유명합니다.
( 저 역시 많이 사용해보지 않았지만 )
메모리 Pool의 원리는 OS에서 Memory를 관리해주는데서 나온 부분으로
일정 크기의 Thread를 가지고 그리고 일정 이상의 메모리를 넘어서면 메모리를 다시 잡아 주는 방법입니다.

여기에는 몇가지 트릭이 있는데 ..

단계적으로 메모리종류를 구분지어서 ( 64b, 128b ,256b 1024b 이상 ) .. 그것을 링크로 관리 해주고
예를 들어 64b보다 작으면 64b 블럭을 할당해주고 .. 다시 해제하면 64b링크에 넣어주고 하는 .. 관리구조를 가지는게 보통입니다.

또 빈 메모리 블럭이 연결되어 존재하면 그것을 Merge하여 더큰 메모리 불럭을 생성한다거나 큰 메모리를 블럭을 잘내어 작은것을 만든다던가 하는 .. 트릭을 사용하므로서 메모리할당, 해제에 대한 속도를 줄일 수 있습니다.

Thread Pool도 비슷한 구조인데 일정수의 Thread를 할당하고 Req가 있으면 처리를 하고 없으면 그냥 노는 구조를 가지죠 ( 소켓 프로그램에서 많이 사용합니다. )

OS 관련 책자를 보시면 Memory Pool에 대해서 좀더 자세히 나와 있는 것들이 많습니다. ^ ^
구지 무거운 hoard나 boost를 사용하실 이유가 없다면 간단히 구현해 보시는것도 괜찮을 것이라 생각됩니다.

From Zeratul

+ -

관련 글 리스트
44255 혹시 메모리 풀이라는거 사용하 보신분 하니 874 2006/03/24
44256     Re:혹시 메모리 풀이라는거 사용하 보신분 김윤동.제라툴 1259 2006/03/25
44298         Re:Re:혹시 메모리 풀이라는거 사용하 보신분 하니 1060 2006/03/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.