동적할당 2

[TIL] 5주차 - (3) : 동적 메모리 할당 기법 개선하기

이번 포스팅에는 지난 (2) 의 코드를 개선할 방안을 나열한 뒤 각각 구현한 코드를 실행해 보고 해당 결과를 확인해보겠다. 교재 코드의 할당 구동 절차 1. init()으로 런타임 heap의 틀을 구색 2. 처음에 크기가 큰 heap을 할당 (CHUNKSIZE heap) 3. 할당과 반환 작업 4. 3번 진행 중에 크기에 맞는 가용 블럭이 없다면 2번 순서에서 진행한 heap을 재 할당 개선 방안 제시 1. first fit으로 가용블럭을 탐색하고 있는 코드현재 코드는 first-fit으로 가용 블럭을 탐색하고 있다. 이 경우 heap의 초반부에 작은 블럭들이 편향되는 단점이 있으므로 next-fit과 best-fit으로 탐색하는 코드도 테스트 해 볼수 있다. 2. 즉시연결 (free 하자마자 연결탐색)..

Jungle 2023.11.10

[TIL] 5주차 - (2) : C 동적 메모리 할당 코드 분석 및 구동 방식 파악

오늘은 malloc() 함수를 실제 구현해 보는 과정을 진행하기 위한 초석이다. 더 성능 좋은 malloc으로 구현하기 위해 책에 구현된 코드의 define 문과 함수를 전부 분석하고, 책의 어떤 방식을 채택하여 구현되어 있는지 확인해본 뒤 어떻게 개선할 수 있을지 여부를 판단하겠다. CS:APP 9.9 코드 예제 해석 먼저 코드의 내부 시스템 코드인 memlib.c 와 Define 문으로 정의된 코드부터 파악해보자 - memlib.c 해당 파일은 시스템 자원인 heap의 시작 pointer , heap이 현재까지 할당된 end pointer , heap의 최대 끝 end pointer를 기억하고 있다. 해당 데이터는 각각 mem_heap , mem_brk , mem_max_addr에 저장되어 있고, 해..

Jungle 2023.11.10