메모리 할당 정책 [ 크래프톤 정글 50일차 ]

jinsung·2025년 7월 1일

크래프톤 정글 9기

목록 보기
45/59

컴하하하하

여전히 묵시적 가용 리스트를 만드는데 갇혀 있는 저 입니다.. 다들 명시적 가용 리스트로 넘어가고 있는데 하... 정글의 시간은 같은데 달리는 속도는 다르구나..

First Fit, Best Fit 까지는 구현이 되었는데... Next Fit 에서 넘어졌네요..

그게 머냐고요...?

지금부터 설명할 거임 ㅋㅋ

메모리 할당 정책

우리가 C언어를 사용할 때 malloc 을 쓰면
컴퓨터가 주소를 반환해주잖아요?

그 주소는 Heap 영역의 어딘가의 주소라는 걸 여러분이 이미 알고있다고 가정할게요.
메모리 할당 정책은 프로세스의 메모리 요청을 만족시키기 위해 어떤 빈 공간을 선택할지에 대한 이야기 입니다.


하.. 이 malloc 으로 요청된 4바이트 짜리 메모리르 어디에 넣어야 되나..?
alloc (이미할당) 된 곳에는 못넣고 ...
free 중에 넣어야되는데.. 어디넣지??

대표적으로 3가지 방법이 있습니다.

  • First Fit ( 최초 적합 )
  • Best Fit ( 최적 적합 )
  • Next Fit ( 다음 적합 )

하나씩 어떤 방법들인지 설명해볼게요.

1. First Fit ( 최초 적합 )

메모리의 빈 공간 목록에서 처음으로 크기가 충분한 블록을 선택해서 할당하는 방식이예요.
적절한 블록을 찾기 위해 전체를 탐색하지 않아도 되지만
앞부분에 자투리 공간들이 많이 생겨서 단편화(fragmentation) 발생 가능.

걍 얘는 처음으로 메모리를 할당할 수 있으면, 크기 상관없이 무조건 할당합니다. 가장 간편한 방법이예요.

2. Best Fit ( 최적 적합 )

요청한 크기보다 크거나 같은 블록 중에서 가장 작은 것을 선택해서 할당해요.
공간 낭비를 최소화하려고 시도하기 때문에 내부 단편화를 줄일 수 있어요!
하지만 탐색 시간이 오래 걸리고(전체 탐색) 아주 작은 조각들이 남아서 오히려 단편화가 심해질 수도 있어요.

걍 얘는 전체 다 탐색한다음에 가장 적합한 곳에 넣어요.

3. Next Fit ( 다음 적합 )

지금 얘 때문에 고생중이예요.

First Fit과 비슷하지만, 이전 탐색이 끝난 지점 다음부터 검색을 시작해서 크기가 맞는 블록을 찾아요. 리스트의 끝까지 갔다가, 다시 처음부터 순환 검색해요.
First Fit보다 덜 치우친 분포를 가지고 연속된 요청이 비슷한 크기일 때 더 유리해요.

하지만 Worst Fit이나 Best Fit보다 성능이 일정하지 않아요.

얘는 아직 구현을 못했어요... 이거 하면 자려 갈려고요

지금 시간 오전 12시 28분..

치타는 달린다...

넘어져도..넘어져도... 먹이를 잡기 위해

1개의 댓글

comment-user-thumbnail
2025년 7월 2일

wow

답글 달기