OSTEP 독학 일지 - H.0.

Jaeyeol Lee @kodingwarrior@hackers.pub
update: 2025-08-04
본 글은 Operating Systems : Three Easy Pieces라는 교재를 독학하는 여정을 기록으로 남기기 위한 시리즈 글입니다.
2019년 이후로 개발 경력을 시작한 지, 6년. 전공자이지만, 다시 OS 기초 공부를 시작한다. 새로운 도전, 챌린징한 도전을 원하고 있는 입장에서 좀 더 나은 환경의 회사를 노리고 취업을 준비하고 있는데, 그러려면 더더욱 기본기로 승부를 해야 한다. "기본기란 무엇인가?" 라는 질문에 대해서는 많은 해석의 여지는 있을 수 있겠지만, 경력이라는 숫자는 제외하고, 최소한 "다른 신입 개발자들이랑 공정한 환경에서 승부 했을 때 내가 경쟁력을 가질 수 있는 것인가?" 라는 물음에는 당당하지는 못하겠다.
요즘은 더더욱 신입 개발자들의 수준이 상향 평준화 되어 있는데, 너무 안일하게 가만히 있다가는.... 과거의 영광만 남아있고, 경력자라는 자아만 비대하고 신입 개발자에게 본보기가 되기도 어려운 사람으로 남게 되리라는 불안감도 있다.
어쩌다 처음부터 다시 공부하게 되었는가?
다시, 돌아와서. 한참 전에 운영체제 수업을 들었는데도 불구하고 다시 운영체제를 처음부터 다시 공부하는 것도 참 비효율적이긴 하다. 비효율적인데 어쩔 수 없다. 기술 면접에서 나오는 단골 질문 "XX란 무엇인가요?", "XX에 대해서 설명해보세요" 같은 질문에 똑 부러지게 설명하기가 어렵다는 것을 인정한다.
운영체제 수업도 분명 열심히 들었고, 학점도 A+ 받고, 코딩 과제는 더더욱 자신 있었던 항목이었어서 무난하게 패스 해 오긴 했는데, 수업을 들은 지 8년이 지난 지금, 머릿속에 남은 게 거의 없다. 개발 경력을 시작한 6년 전 이후로, 취업 준비 활동도 본격적으로 하는 게 이번이 처음인데, 굵은 원서 책을 붙잡고 공부하는 것도 굉장히 오랜만이다. 시간이 지나서 학습 능력이 더 둔화된 것 같지만, 한계는 극복해야겠지.
체계적으로 학습하기엔 주의력이 산만했다 같은 변명으로 넘기고 싶지도 않고, 다른 사람들이랑 경쟁할 때 공정한 조건에서 경쟁하고 당당하게 인정받겠다는 것이 내 원칙이다.
그래서 계획은 어떻게 되는가?
simnalamburt님을 포함해서 몇몇 지인들이 자주 추천하는 책이 OSTEP이라서, 이 교재를 기준으로 독학을 진행 중이다. 이론이 빼곡하게 적힌 두꺼운 책을 집중해서 읽는 것도 굉장히 오랜만이다. 초심으로 돌아가서 제대로 경쟁한다 생각해야지.
물론, 과제를 먼저 진행하고 모르는 건 교재를 찾아보는 식으로 진행하게 될 것 같다. 과제는 이 책에 포함된 과제 프로젝트인 xv6인데, MIT에서 운영 체제 엔지니어링 코스의 교육 목적으로 개발된 운영 체제이다. 모자란 부분을 의도적으로 뚫어놓고, 그 빈자리를 스텝 바이 스텝으로 채워 가는 전형적인 프로젝트 과제다.
xv6 실습을 진행하면서 모르는 것도 찾아보고 직접 내 힘으로 만들어보는 과정에서의 OS가 어떻게 만들어지는 것인지, OS 자체가 구체적으로 어떻게 동작하는지 체화하는 루틴을 가져보고자 한다. 그러면서 CS 면접 단골 문제도 겸사겸사 공략하는 방향으로 전략을 세웠다.
xv6 과제에 대한 목차는 여기에 공개가 되어 있다.
https://pages.cs.wisc.edu/~remzi/OSTEP/lab-projects-xv6.pdf
앞으로 연재할 글들은 xv6 프로젝트의 세부 과제들을 한 단계, 한 단계 공략하면서 연재하게 될 것 같다. 이렇게 목차만 훑어봤고, 자세한 내용은 각각 직접 부딫혀 보면서 알게 될 것 같다. 앞에 H가 붙은 이유는 OSTEP에서 xv6 과제에 대한 설명이 Appendix H에 붙어있어서 그렇게 이름이 붙은 것 같다.
-
H.1 Intro Project
-
H.2 Processes and Scheduling
-
H.3 Intro to Virtual Memory
-
H.4 Copy-on-write Mappings
-
H.5 Memory mappings
-
H.6 Kernel Threads
-
H.7 Advanced Kernel Threads
-
H.8 Extent-based File System
-
H.9 Fast File System
-
H.10 Journaling File System
-
H.11 File System Checker
앞으로의 방향성은?
다음에 이어질 글들을 머릿속에 어떤 방향으로 써 갈 지는 확고해졌다.
실은, 이 글을 쓰고 있는 지금, 2025년 8월 4일 기준으로 진행 중에 있는 OSSCA 2025[1]멘토링 과정 중간 레포트를 쓰다가 "이런 글을 한번 써볼까?" 하고 영감을 받은 데 서부터 충동적으로 시작했다. 내가 어떤 사고의 흐름으로 이슈를 남겼는지 배경을 설명하고, 내가 어떤 문제 의식에서 이슈를 잡고 풀 리퀘스트를 올렸는지, 그리고 풀 리퀘스트가 머지 되기 까지 어떤 일들이 있었는지 서사를 기록하는 과정에서 머릿속에 희미하게 남아있던 스냅샷을 좀 더 명확한 형태로 남길 수 있었고, 이런 포맷으로 글을 꾸준히 남기면 어떨까 싶은 생각이 들었다. 따라서, 방향성은 명확하다.
공부한 내용을 기계적으로 정리하는 글을 쓰지는 않고 싶다. 요약 정리하는 블로그를 운영할까 싶기는 했었지만, 기계적으로 정리하는 것은 시간도 많이 걸릴 뿐만 아니라, 머릿 속에 남는 일도 적다. 단순히, 개조식으로 정리한 글들은 기억을 덤프 뜨기에는 좋기는 하지만, 여러 개념들이 유기적으로 이어지게 다듬어지지는 않는다.
프로젝트 과제의 각 스텝을 밟아 가면서 쓰는 글인 만큼, 나름대로의 서사가 있는 흐름의 글을 쓰고 싶다. 단순히 글을 쓰는 사람 입장에서가 아니라, 글을 읽는 입장에서도 재밌게 읽을 수 있는 스토리를 써가고 싶다. 어떤 것을 만드는 과정에서 어떤 우여곡절이 있었고, 그 과정에서 어떤 것들을 발견했고, 그것들을 어떻게 내 것으로 만드는 과정을 정제된 기록으로서 남겨두면 어디 가서 썰 풀기도 좋을 만한 소재가 되지 않을까? 라는 생각도 든다. 기술 면접도 어떻게 보면 "내가 제일 자신 없는 종목" 이라기 보다는 "내가 아는 거 썰 풀기 좋은 시간" 이라고 발상을 바꿔볼 수도 있을 것 같다.
사실은 취업준비도 해야 하니까~ 겸사겸사 해보면 나쁘지 않잖아~
겸사겸사 이런 글이 게시될 해커스펍에도 읽을 만한 글 늘릴 수 있고 좋잖아~
OpenSource Software Contribution Academy ↩︎