본문 바로가기
💻 프로젝트/정글 사관학교

[WEEK5] allocator 재밌다!

by ddubbu 2024. 9. 13.

🤔회고

우리 모두가 성장 중

지식을 주입하고 있고 분명 성장하고 있다. 하지만 내가 오늘은 조금만 일찍 퇴근하던게 쌓여 격차가 될 수 있음을 느꼈다. 계속 자극받을 동료들이 있어서 좋다. 잠시 쉬고 싶을 때 늦게 퇴근하는 동료들을 보며 한 줄이라도 더 보게 되고 self-푸시하게된다. 주어진 환경이 고맙고 헛되이 보내지 않았으면 한다.

 

늦잠으로 에너지 풀인 이번주

안다. 윗 문단과 상반되는 인트로에 띠용했음을, 하지만 오히려 줄어든 시간에 더 집중했던 것 같다. 이번주는 알람 없이 깨서 11시 출근이 일상이 되었다. 그리고 한 01시 즈음 퇴근하니깐 12시간 정도 공부하고 있다. 분명히 지난 한달보다 엉덩이 붙이고 앉은 시간은 줄었지만 학습 만족도는 높다. 똑똑하고 집요한 팀원들 덕분에 allocator 4가지에 대한 개념을 이해하고 핵심 로직을 직접 짜보는 경험을 하고 있기 때문이다. 이런 지적 토론은 언제나 짜릿하다. 그리고 코틀린 스터디도 조인하고 쉬는 시간에 노가리, 보드게임까지 꽤 재밌는 한주를 보냈고 충분히 충전이 되었다. 길게 갈 수 있도록 공부-휴식 balance를 찾아가자.

 

 

📅필수 목표

 

[240906 금] 11:30 ~ 00:20 (13H)

❌ Leetcode 1시간

✅ 4주차 wrap-up 및 포스팅

✅ 4주차 Quiz 질의응답보고 빠트린거 복습 (태블릿)

✅ implicit 버전 메모리 할당기 구현

- ✅ 교재 보고 따라하기 (궁금한점 리스트업) / 1차 시도 `Segmentation fault (core dumped)`

- ✅ 블로그 참고해서 궁금한점 리스트업

- ✅ 21시 팀활동

 

[240907 토] 9:30 - 00시 (12H 30min)

✅ Leetcode 1시간 (점심 전후 #1367 한문제, 재귀에 뱅뱅 돌아 답 봄)

21/ 팀활동 implicit 개념 리뷰 및 코드 공유

- explicit 개념 공부 (✅ 교과서 / 기타 자료)

 

혼공컴

✅ 오후) 6장 메모리와 캐시 메모리 외 OS 관련 챕터 읽기

 

[240908 일] 13시 ~ 1:10 (오전 밍기적, 12H)

✅ explicit 개념 공부 - 블로그 [그림으로 알아보는 메모리 동적 할당]

explicit 구현

 

 

[240909 월] 13시 ~ 01시 (오전 밍기적, 12H)

❌ Leetcode 1시간

13:30 코틀린이 스터디 논의

✅ Kotlin in Action 책 금액 송금

20시/ 팀활동 - simple segregated list allocator 개념 공부 및 구현 (테케 7-8 통과)

 

 

[240910 화] 11시 ~ 03 (12H 오전 밍기적, 새벽 수다+야식1)

Leetcode 1시간 (12:20 ~ 1:50) #1916 #0232 #0225 / parentheses 관련 문제(#0022 #0020)

🔼 simple segregated list allocator 디버깅 (대신 놓친 논리 고민해보기)

 buddy system allocator 개념 논의

 

[240911 수] 19시 ~ 02시 (6H, 저녁까지 푹 휴식+야식2)

✅ buddy system 구현

✅ week05 과제 제출 + math.lib 코드 제외 (buddy system에서 작동하면)

❌ bomblab (*.tar 해체까지 완료)

 

🔥추가 정리 필요

 

[시간 남으면]

- memory segmentation ex https://www.youtube.com/watch?v=_8-ht2AKyH4

- dynamic allocator 관련 포스팅 거리 고민하기

이것보다 더 쉽게 이해되는 표현없을까? 빠트린 부분 챙겨가면서

 


- 키워드: SICP 1장, 엘릭서, 함수형 프로그래밍

- Q. page는 어떤 개념?

https://www.kernel.org/doc/gorman/html/understand/understand009.html

 

코치님 리뷰

- 힙의 시작점? BSS 뒷 주소

- sbrk (포직스, 이콜?, 구현이 안되어 있음?) : set_brk / 늘려도 되겠어? 사전에 물어봄

 

- 내부 단편화 vs 외부 단편화

- 8정렬 - 64bit CPU에서는 사실 내부 단편화는 잘 안 일어남

-- 하지만 최소블록 4kb 로 잡는 이유는? 생각해보기 (보다 크거나 작을때 장단점 고민해보기)

-- 그럼 연속하지 않고 할당하는 법은 없나?

 

- Dynamic Aloocator 왜 필요함?

-- C 정적할당 : 프로그램 짤때 배열의 크기를 정함

-- C 동적할당 : 미래 데이터 사이즈를 알 수 없기 때문에, 리소스 할당 문제가 존재함

-- 리소스 할당 문제: 메모리 문제만은 아님, 시간 할당, file storage, 장치 등 응용이 가능함, System 뿐만 아니라 Application 단에서도

 

 

📝메모

기타

- C_Cpp formatter 줄바꿈 금지

- 소스 파일(.c) vs 오브젝트 파일(.o) vs 실행파일(.exe 혹은 생략)

-- 실행 파일 : 컴파일 산출물 오브젝트 파일을 라이브러리와 링크하여 실행 파일 생성

 

 

void* : 무슨 자료형이든 참조 가능 (only right value)

void** : left_value, right_value

 

 

custom trace file

$ make clean && make && ./mdriver -v -f custom.rep

20000
1
1
1
a 0 16

 

 

크롬 즐겨찾기 다크모드 > 테마선택 가능