알라딘

헤더배너
상품평점 help

분류

이름:박주항

최근작
2023년 1월 <레트로 게임 개발 바이블>

0부터 시작하는 OS 자작 입문

2000년대 초중반에는 많은 개발자가 자작 OS 개발에 관심을 갖고 있었고, 한국에서도 몇 권의 운영체제 개발 서적이 출간된 적이 있었다. 하지만 리눅스가 OS 세계를 평정하면서 그 열기는 사그라들었으며 한국의 경우에는 자작 OS를 개발하는 시도 자체가 사라졌다. 마치 언리얼 엔진이나 유니티가 3D 엔진 시장을 석권해 대부분의 자작 3D 엔진을 사장시킨 것처럼 프로그래밍 분야에서 자작 OS 개발이라는 주제는 사라지고 만 것이다. 더 이상 자작 OS를 개발하지 않는 이유는 너무나도 단순 명료하다. 개인이 아무리 잘 만든다 하더라도 상용 OS를 뛰어넘기가 불가능하기 때문이다. 다르게 말하자면 돈이 되지 않는다는 뜻이다. 학습해야 하는 정보가 너무나 넘쳐나는 작금의 시대에 있어 불필요한 부분에 시간을 낭비하는 것은 자제할 필요가 있다. 그러나 프로그래밍에 있어 하드웨어 분야를 제외한 모든 소프트웨어를 자신의 손으로 제어할 수 있다는 점은 아주 매력적으로 다가온다. 단순히 리눅스 커널 기반의 코드를 조금 수정하고 GUI로 포장해 독자적인 OS를 개발했다고 하면 그것 자체로도 큰 의미를 가질 수는 있겠지만, 비록 완벽하지 않고 기능이 부족하더라도 모든 코드를 직접 작성해 보는 작업은 그 나름대로의 가치가 있다. 애초에 기존의 OS를 개량하는 것과 자작 OS를 개발하는 것은 프로그래밍 분야가 다르다. 비록 자작 OS 개발이 당장의 실무에 직접적인 도움을 주지는 않겠지만 스스로 자신만의 OS를 개발할 수 있다면 그것은 적어도 어떤 프로그래밍 분야에서도 자신이 살아남을 수 있는 역량을 갖고 있다는 증표가 될 것이다. 그런 의미에서 이 책에서 소개하는 MikanOS는 자작 OS를 개발하는데 필요한 기초를 제공하므로 독자들에게 큰 도움이 될 것이다.

C++로 나만의 운영체제 만들기

이 책을 집필하기 전에 몇 권의 책을 집필했지만 이번만큼 힘든 적은 없었다. 어떻게 하면 독자들에게 내용을 잘 전달할 수 있을지 고민하면서 집필했으나 내용이 마음에 들지 않아 수없이 좌절했고, 프로그램에 버그가 발생하면 원인을 찾을 수 없어 며칠 밤낮을 새고 식음을 전폐하며 문제 해결에 몰두했었다. 어떤 때는 무엇을 하고 있는지 의구심이 들 정도로 나아가는 방향에 회의감을 느꼈으나, 어느 순간 해결하지 못했던 문제들이 하나씩 풀리고 작업이 댐 무너지듯 순조롭게 나아가기 시작하자 자신감이 생겼으며 의도한 목표에 도달할 수 있다는 확신을 가졌다. 최종 탈고를 하면서 여전히 뭔가 부족하다는 생각은 가지고 있으나 추후 독자들에게 피드백을 받고 개선해나가면 더 완벽한 운영체제 서적으로 발돋움할 것이라 믿어 의심치 않는다.

Game Programming in C++

게임업계에 종사한 사람으로서 이런 훌륭한 책을 번역하게 된 뜻깊은 일이다. 내용을 간단하게 설명하는 다른 책과 달리, 이 책은 게임에서 쓰이는 수학, AI, 사운드, 애니메이션 등 전반적인 기술을 자세하게 설명한다. 또한 C++로 제작된 예제 소스코드를 제공해 내용을 쉽게 전달하는 데 주력했다. C++의 장점은 저수준 레벨에서 프로그램을 제어할 수 있다는 점이다. 즉, C++로 프로그램을 잘 작성한다는 것은 컴퓨터 아키텍처를 잘 이해하고 있다는 것과 일맥상통한다고 볼 수 있다. 그래서 컴퓨터 성능이 좋지 않았던 2000년대 초반에는 게임 개발 언어로 C++가 인기를 끌었다. 하지만 C++는 생산성 측면에서 후속 언어에 밀리면서 그 점유율이 굉장히 낮아졌다. 또한 유니티 같은 강력한 게임 제작 툴이 등장하면서 C++의 입지는 매우 줄어들었다. 하지만 C++ 언어는 지속해서 발전하고 있으며, 언리얼 엔진은 여전히 C++ 언어를 지원한다. 중견급 이상의 기업에서는 항상 C++ 스킬을 요구하기 때문에 프로그래머라면 C++는 기본으로 다룰 수 있어야 한다. 앞에서 언급한 툴이나 특정 언어가 영원히 시장을 장악한다고 볼 수는 없으며, 언젠가는 더 나은 게임 개발 모델이 나올 것이다. 그런 경우를 대비하기 위해서라도 특정 툴에 종속되는 내용이 아니라, 기반 기술을 이해하는 것은 큰 도움이 된다. 예를 들어, 클래스 간 계층 구조를 다루는 개념은 C++, 자바, C# 등의 객체지향 언어에 바로 적용해서 사용할 수 있으며, 새로운 언어가 등장하더라도 다시 활용할 수 있는 이론이다. 그리고 이 책은 샘플 코드를 위해 다양한 크로스 플랫폼 라이브러리를 활용했다. 이 책에서 사용한 SDL, OPENGL, FMOD 라이브러리는 다양한 플랫폼으로 이식할 수 있기에 알아두면 언젠가는 반드시 도움이 된다. 한 권의 책으로 게임에 사용된 모든 프로그래밍 기법을 담기에는 무리겠지만, 적어도 이 책은 게임 개발에 도전하려는 학생이나 일반인에게 좋은 지침서가 될 것이며, 현업 종사자에게는 자신의 실력을 점검해 볼 수 있는 가이드를 제공할 것이라고 확신한다.

YUZA OS Vol.1 : 소프트웨어편

『C++로 나만의 운영체제 만들기』 서적을 집필한 후 자신만의 운영체제 제작이라는 목표를 달성했다고 생각했다. 하지만 그건 큰 착각이었고 그전에는 보이지 않았던 수많은 운영체제 개발 영역이 존재함을 인식하게 됐다. 결국 지의 늪에 빠져버린 필자는 운영체제 개발이라는 영역에 계속 시간을 투자하게 됐다. 앞으로 이 즐거운 시간 낭비가 언제까지 지속될지는 모르겠지만 스스로 만족할 때까지 계속 작업을 진행하려고 한다. 여러 운영체제를 리서치해 보면 각각의 나라에는 대표적으로 내세울 수 있는 운영체제가 존재하지만 한국에는 딱히 내세울 만한 운영체제가 없다. 필자가 개발 중인 YUZA OS가 그 자리를 차지할 수 있기를 바라며 이 책을 출시하는 시점에서도 OS 개발은 계속 진행하고 있다. 운영체제 개발은 어려운 작업이다. 내용이 방대할 뿐만 아니라 운영체제의 동작 원리를 정확하게 이해하지 못한다면 개발 자체가 어렵기 때문이다. 그만큼 운영체제 개발은 많은 지식과 경험을 요구한다. 또한 운영체제 개발이 어려운 이유는 하드웨어 관련 개발 자료를 찾기가 어렵기 때문이다. 소스코드 레벨의 버그라면 어떻게 해서든지 수정할 수 있지만 하드웨어와 연관된 버그가 발생하면 개발자는 패닉에 빠지기 쉽다. 그리고 운영체제 개발이라는 주제는 생활을 영위하는 것에 큰 도움이 되지 않기 때문에 더더욱 관심을 갖지 않는 분야다. 필자도 왜 계속 이 운영체제 개발을 진행하고 있는지 이해가 불가하지만 두 가지만은 확실히 답할 수 있다. "운영체제 개발은 정말 재밌다"와 "아무도 하지 않기 때문에 희소성이 있는 작업이다"라는 것이다. 이 두 가지만으로도 운영체제를 직접 제작해 보는 것은 충분한 가치가 있다고 본다. 운영체제 커널 개발회사에 몸을 담은 적이 없고 개발 관련 노하우도 일천한 상황에서 운영체제를 개발하려면 기존 운영체제를 자세히 관찰하고 분석하는 방법밖에는 없다. 그래서 『C++로 나만의 운영체제 만들기』에서는 기존의 이론서 등을 참조하고 어떻게든 운영체제가 실기에서 동작하는 작업에 주력했다. 반면 이 책에서는 상용 운영체제의 시스템 동작을 살펴보면서 프로그래밍 인터페이스를 다듬는 데 주력했다. 즉 운영체제 상에서 동작하는 응용앱을 개발하는 관점에서 작업을 진행했다. 자화자찬하는 것은 그렇지만 YUZA OS는 혁신적인 운영체제라고 평가한다. 가능성이 무궁무진한 만큼 YUZA OS 소스코드를 완벽하게 장악할 수 있다면 독자분들에게 큰 도움이 될 것이라고 확신한다. 이 책을 통해 독자분들의 프로그래밍 능력이 한층 더 업그레이드되길 기대해 본다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자