이번 주는 RB 트리 구현에 사용했던 malloc
함수를 직접 C로 구현해보는 Malloc Lab 과제를 진행했다. 이는 세계 굴지의 컴퓨터공학 명문 대학인 카네기 멜론 대학에서 실제로 학생들에게 내주는 과제라고도 한다. 주차를 진행하는 내내 명문대 과제의 퀄리티에 놀라고, 이런 것을 맨땅에 헤딩하며 구현했을 CMU 학생들에 클라스에 두번 놀랐다 😂
정글에서의 주차를 거듭하면 거듭할수록 점점 컴퓨터의 심장부로 깊이 내려가고 있다는 느낌이 든다. 다~ 커리큘럼에서의 의도대로겠지? 초반에는 고급 언어인 파이썬으로 알고리즘 문제들을 풀어내며 SW개발의 높은 레벨에서 몸을 풀고, 이후에는 기계어와 가장 가까운 C언어와 친해지고, 이번 주는 나만의 동적 메모리 할당기를 직접 만들어보는, 참으로 심오한 경험을 했단 말이지. 모든 일련의 과정이 정글의 꽃인 Pintos 주차를 위한 하나하나의 발판처럼 느껴졌고, 안그래도 악명높은 OS주차를 견디기 위해서는 무엇 하나도 놓치면 안되겠다는 마인드로 이번 주를 보냈다!
다양한 유저 라이브러리들을 입맛대로 import
해오고, 너무나도 편리한 내장 함수들을 이용해 코드를 작성하던 날은 어디에.. 사소한 것 하나하나 구현하려면 한숨부터 나왔다. C로 무언가를 만들어 낸다는 것은 그런 것 같다. 배열 한번을 사용하더도 조심조심 사용해야 하는 그런 것! 다행인 것은 RB 트리 주차에서 이 녀석과 많이 친해질 수 있었다는 것이다. 특히나 포인터! 포인터에 대해 이해를 확실히 해 놓았던 것이 이번 주차를 수월하게 만들어 주었다.
동적 메모리 할당 자체는 엄청나게 난해한 개념은 아니다. 힙이라는 넓은 강변에서 사람 수에 맞게 돗자리만 펴주면 되는 느낌? Implicit Free List
를 이용한 기초적인 할당기는 책에 레퍼런스가 있기에 금방 구현할 수 있었다. 당연하게도 첫 테스트 점수는 50점대로 절망적 😂 남은 기간동안 메모리에 대한 공부와 함께, 테스트 점수를 올려내야만 했다. 결과적으로 최고 점수는 84점! 자세한 내용들은 이번 주에 포스팅한 글들에 써 있다!
매일 매일 칼같은 일정은 지키지 못하고 있지만, 매일을 아침, 점심, 저녁으로 나누어 일정 관리를 하기 시작했다. 돌이켜보면 언제나 어디 갇혀야지만 규칙적인 생활을 하는 것 같네 ㅋㅋㅋ 이렇게 할 일을 미리미리 정해놓고 하루에 임하면, 최소한 뭘 해야할 지 몰라서 헤메지는 않는 것 같다. 그것만 해도 충분하지 뭐~ 요즘 목 건강에 적신호가 들어왔다. 아마 정글 입소 전 안좋은 자세로 노트북으로 작업하다 몇 번 잠들었는데, 그 무렵부터 계속 아파왔던 걸 보니 그게 신호탄이었던 것 같다. 무사히 정글을 수료하려면 건강도 필수이니 조금이라도 더 규칙적으로, 또 건강하게 매일매일을 보내야겠다.
여느 때와 같이 정신없는 한 주를 보냈다. 눈코 뜰 새 없이 새로운 것을 공부하고, 이제 좀 알겠다 싶으면 정글은 또다른 거대한 공부거리를 던져준다. 덕분에 해이해질 겨를조차도 없이 매 주 몰입할 수 있지만, 한편으로 배웠던 것들을 금새 잊어버리지는 않을까 걱정되기도 한다.
답은 정해져 있겠지? 꾸준한 복습만이 공부한 것들을 완벽히 내 것으로 만들어 줄 유일한 길이다.
두려워하면 아무 일도 일어나지 않아 🏃 - 스키마 스위치 전력소년 中