정글 6주 차!! week06의 키워드
WEEK06: 시스템 콜, 데이터 세그먼트, sbrk, 메모리 단편화
week05주 때 RBTREE를 구현하면서 malloc을 사용했었다. 그리고 이번 주 차에는 내가 사용했던 malloc함수를 내가 만드는 것이 목표!
1. Malloc Lab 구현
저번 주에는 실사용에 사용되는 효율적인 자료구조를 통해 C언어 문법에 대해서 익혔다면, 이번 주는 C언어에서 메모리 할당에 사용되는 malloc함수를 직접 구현하면서 데이터가 메모리에 어떤 방법으로 할당되는지 등 메모리에 대한 개념을 이해하는 것이 과제의 목표였다.
말롭랩 과제에 대한 자세한 설명은 아래 링크로!
2021.09.14 - [개발자 도전기/[SW사관학교 정글] 개발일지] - Malloc Lab | 동적 메모리 할당(1) - 개념 정리
2021.09.14 - [개발자 도전기/[SW사관학교 정글] 개발일지] - Malloc Lab | 동적 메모리 할당(2) - 묵시적 가용 리스트(Implicit free list)
말록랩 역시 만만치 않았지만, 전 주에 했던 레드-블랙 트리가 워낙 어려웠던 탓인지, 말록랩은 전주에 비해서는 할만했다. 무엇보다 교재 '컴퓨터시스템' 9장에서 말록랩에 대해 자세하게 설명이 되어 있어서 이해하는데 도움이 많이 되었다.
다만 교재에 오역이나 오타가 생각보다 매우 많다. 번역도 이해할 수 없게 하는 경우들도 많아서 내가 한국말을 읽고 있는 게 맞는지 헷갈릴 때도 있다..
(이게 어느 정도냐면, '인접 블록 모두가 할당된 상태이고, 따라서 연결이 가능하다'라고 교재에 적혀 있는데, '연결이 불가능하다'가 맞는 표현. 원본에서도 'both adjacent blocks are allocated and thus no coalescing is possible. '라고 적혀 있음. 이런 오류들을 생각보다 많이 발견할 수 있어서, 책을 읽을 때 방심하면 안 된다!!)
그래서 번역본 교재와 영문판 교재를 같이 보는 것을 추천드리고, malloc lab이 전세계적으로 유명한 과제다 보니 유튜브에서도 쉽게 설명해주는 강의들이 있다.
2. 컴퓨터 시스템 기초부터 공부할 필요성 느낌
말록을 구현하는 부분은 컴퓨터시스템 교재의 9장에 나온다. 그래서 교재를 공부하다 보면, 익숙하지 않은 개념들이 자주 등장한다.
예를 들면,
동적 메모리 할당은 말그대로 동적, 즉 가변적으로 메모리를 할당할 수 있다는 것이고, 동적 메모리 할당기는 힙(heap) 프로세스의 가상 메모리 영역을 이용하여 관리한다.
라고 하면 나는 '힙(heap)'은 어떻게 되어 있지?', '가상 메모리는 뭔데' 라는 생각이 들고, 결국 9장의 앞 장을 봐야 하고, 그 앞 장의 또 앞 장을 봐야 하는 상황이 발생했다. 이렇게 꼬리에 꼬리를 물면서 계속 파다 보면 결국 가장 앞, 1장으로 돌아가게 된다(가자 태초마을로...!).
물론 일주일의 시간이 과제를 구현하기에도 빠듯했기 때문에 개념을 깊게 파지는 못 하고 최소한의 이해만 하고 과제 구현이 열중했다. 그러나 계속 이런 식으로 공부하면 결국 기초를 제대로 쌓을 시간이 영영 없을 것 같아서 틈날 때마다 컴퓨터 시스템과 운영체제의 기본 개념들을 익히기 위한 시간을 할애해야 겠다는 다짐을 했다.
3. 코드 리뷰
이번 주차 test는 뭔가를 구현하는 것 보다는 서로의 코드를 리뷰해주고, 그 리뷰에 대한 피드백을 받는 방식으로 진행됐다. 리뷰 코드에 대한 설명은 1기 때 류석영 교수님이 강의해주셨던 영상을 참조했다.
4. 협력사 설명회(09/16) - 보이저엑스
이번주에 발표한 협력사는 보이저엑스(VoyagerX)로, 인공지능 서비스를 만드는 사람과 팀을 키우는 회사라고 소개했다.
보이저엑스도 저번주에 왔던 채널코퍼레이션과 마찬가지로 사용자, 즉 '고객'을 매우 중시했다. 또한 성장이라는 키워드를 굉장히 중요하게 여겼고, 이런 부분이 매력적으로 다가왔다.
무엇보다 남세동 대표님께서 한 말이 굉장이 인상적이었다. Q&A 시간 때, 앞으로 어떤 제품/서비스를 개발하고 싶냐는 질문에 이렇게 대답하셨다.
딱히 없다. 나는 요리사다. 어떤 메뉴를 만들고 싶다는 생각은 없다. 그저 내가 만든 음식을 사람들이 맛있게 먹는 것으로 만족한다.
나 또한 아직까지 내가 어떤 제품, 서비스를 개발하고 싶은지, 어떤 개발자가 되고 싶은지에 대해 생각이 없었다. 나는 이를 목표가 뚜렷하지 않다고 생각했고 정글 수료 전 까지 어떻게 해서든 구체적인 목표를 가지려고 했다(조급한 마음에 당근마켓에서 일해보고 싶다는 생각은 하긴 했지만!).
하지만 대표님의 저 말을 듣고 나서 약간의 생각의 변화가 있었다. 당연히 내가 하고 싶은 서비스를 하는 회사에 취업하면 제일 좋겠지만, 어떤 일이 됐든 고객을 만족시킬 수 있도록 하는 것이 최우선인 것 같다. 앞으로 내가 어떤 기업에서 일을 하게 될지 모르겠지만, 일단 성장하기 좋은 문화와 고객들에게 높은 만족도를 선사하는 곳에서 일하고 싶다는 생각이 든다.
'개발자 도전기 > [SW사관학교 정글] 개발일지' 카테고리의 다른 글
정글에서 살아남기| WEEK08 | 본격적인 OS Deep-Dive 시작 (2) | 2021.10.04 |
---|---|
정글에서 살아남기 | WEEK07 | 웹서버 만들기 (0) | 2021.09.28 |
정글에서 살아남기 | WEEK05 | 이런 C......!! Red-Black TREE 구현하기 (0) | 2021.09.12 |
정글에서 살아남기 | WEEK04 | 다이나믹 프로그래밍은 다이나믹하지 않다구 (0) | 2021.09.05 |
정글에서 살아남기 | WEEK03 | 여전히 느리지만 그래도 성장하는 중! (0) | 2021.08.29 |
댓글