본문 바로가기

7주차 개발일지

@정소민fan2025. 4. 30. 14:00

이번 주차의 메인 과제는 malloc lab이었다. malloc과 free, realloc을 직접 구현해보며 메모리 할당이 어떻게 이루어지는지 공부해 볼 수 있었다.


Malloc Lab

https://verdant-bathtub-bae.notion.site/1df7bb7778c980b6964df2ab7a71a933?pvs=4

 

동적 할당 | Notion

동적 메모리 할당

verdant-bathtub-bae.notion.site

동적 할당에 대해 정리해둔 페이지이다. 우리는 명시적 할당기, 그러니까 직접 free를 해주어야만 하는 할당기를 구현해야 한다.

 

CSAPP에 나와있는 방식은 묵시적 가용 리스트 - first fit 방식이었다. 맨 처음에는 63점이 나왔었는데, realloc을 개선하고 나니 68점까지는 점수가 나왔다. 하지만 점수가 그다지 의미가 없는게, 그냥 컴퓨터가 좋으면 점수가 잘 나온다...

채점서버를 따로 둬서 코드만 업로드하면 점수를 출력해주도록 하면 어땠을까 하는 생각이 든다.

 

이후에는 Buddy 시스템 구현을 목표로 정말 열심히 구현했지만... 제대로 완성하지를 못했다 ㅠㅠ

차라리 명시적 가용 리스트, 분리 가용 리스트부터 차근차근 구현해볼걸 그랬다.

 

버디 시스템을 구현해보면서 느낀건 가독성의 중요성이었다. 테스트 코드는 정말 가독성을 하나도 고려하지 않고 작성된 것 같았다. 덕분에 역추적해가며 디버깅해보는건 꿈도 못꿨고... 앞으로 코드를 작성할 때에 정말 두고두고 생각날 것 같은 테스트 코드였다.

코치님이 코드 내부에 printf 문을 넣고 로그 파일로 뽑아내라는 팁을 주셨지만, 로그 파일도 6만줄이 되어가니 디버깅이 정말정말 힘들었다ㅠㅠ

 

메모리 계층 구조

디스크부터 캐시까지, 메모리 계층 구조를 공부해야 한다 !!

사실 작년 2학기때 배운내용이라 대부분 기억이 났었다. 메모리 마운틴은 무슨 소리인지 아직 잘 모르겠지만.. 코드를 어떻게 작성해야 지역성을 잘 사용할수 있을지 나와있어서 공부하기는 더 좋았다. 하지만 정말 저렇게 작성한다고 지역성을 유의미하게 사용할수 있을지는 잘 모르겠다.. 캐시 라인 하나에 64바이트라는데, 이미 최적화가 될대로 되지 않았을까?

그래도 stride-k 패턴을 이해하는 것은 큰 도움이 될 것 같다

https://verdant-bathtub-bae.notion.site/1e37bb7778c98062b612fc28f070fb35?pvs=4

 

메모리 계층 구조 | Notion

ROM

verdant-bathtub-bae.notion.site

 

후기

이번주는 여러모로 불만족스러운 한 주였다. 목표한 과제를 한번도 끝내지 못한 적이 없었는데.. 그놈의 디버깅이 안되서 포기해야 한다니 참

다음주도 집에 한번 내려가야 해서 이틀을 꼬박 빠져야 하는데 걱정이다.

'크래프톤 정글' 카테고리의 다른 글

9주차 개발일지  (0) 2025.05.14
8주차 개발일지  (1) 2025.05.07
6주차 개발일지  (0) 2025.04.23
5주차 개발일지  (0) 2025.04.16
4주차 개발일지  (0) 2025.04.10
정소민fan
@정소민fan :: 코딩은 관성이야

코딩은 관성적으로 해야합니다 즐거운 코딩 되세요

목차