Scientia Conditorium

[책리뷰] 컴퓨터 밑바닥의 비밀 본문

서평/IT-책

[책리뷰] 컴퓨터 밑바닥의 비밀

크썸 2024. 5. 15. 04:19

 

 

전반적인 소감 및 마음에 드는 부분

시니어 개발자 이상이라면 무조건 봐야되는 책이라고 생각한다. 요즘 개발자들은 CPU가 어떻게 동작하는지, 메모리 구조가 어떻게 이루어져있는지 몰라도 된다고 주장하는 사람들도 많다. 그러나 내 생각은 다르다. 엔지니어급으로 올라갈수록 고수준부터 저수준까지 제품이 어떻게 동작하는지 모두 알아야 된다고 생각한다. 전설의 프로그래머 존 카맥의 팟 캐스트에서도 이와 똑같은 말을 한다. 시스템 레벨의 생각이 중요한데, 고수준부터 하드웨어까지 기술 스택 동작을 모두 알면 최적화하기 위해 무서을 희생할지 결정할 수 있다는 것이다. 즉, 기술의 겉면만 보지말고 깊이 탐구하여 기술 스택의 모든 것을 다 알고싶어 하라는 의미이다.이런 관점에서 이 책은 컴퓨터의 동작 원리를 제대로 파헤쳐 코드가 컴퓨터 내부에서 어떻게 작동하는지 자세히 알려주기 때문에 존 카맥이 말한 부분을 학습할 수 있는 좋은 책이다. 존 카맥이 말한대로 고수준부터 저수준까지 모든 동작을 알면, 기획자들이 요구하는 사항을 어느 단에서 구현/수정해야하는지 확실하게 파악할 수 있게된다.

 

 

책의 구성

책은 총 6장으로 구성되어 있다.
1장에서는 프로그래밍 언어가 무엇인지, 컴파일러를 통해 코드가 실행 파일로 어떻게 생성되는지에 초점을 두어 설명한다. 2장에서는 운영체제와 프로세스, 스레드, 코루틴은 실제로 무엇이고 콜백 함수, 동기화/비동기화와 같은 기능들이 원리를 설명해준다. 나아가 컨테이너와 가상 머신 기술들이 어떤 원리인지를 알 수 있게된다.
3장에서는 메모리 본질과 악명 높은 포인터가 무엇인지, 메모리 할당에 대해 설명한다.
4장에서는 컴퓨터 시스템에서 가장 중요한 CPU를 소개하고 구현 원리, 시스템 호출 등 CPU를 제대로 이해하기 위해 트랜지스터를 설명하고 있다. 

5장에서는 컴퓨터 시스템의 캐시가 무엇인지 살펴본다.

마지막 6장에서는 입출력/파일 시스템을 통해 어떻게 프로그래머가 입출력을 효율적으로 처리할 수 있는지를 다룬다.

 

정리하자면 컴퓨터에서 동작하는 프로그램이 사용자로부터 입력을 받아 처리한 후 출력하는 과정에서 컴퓨터 내부에서 무슨 일이 일어나는지 알 수 있게 된다. 이 모든 과정을 단순히 글로 설명하면 지루하고 이해하기 어렵기 때문에 책의 많은 부분에 그림을 통한 비유로 잘 설명되어있다. 말이 조금 어렵더라도 그림을 통해 어떤 내용인지 단번에 이해할 수 있도록 구성되어 있다.

 

 

컴퓨터가 이해할 수 있는 기계어를 살펴봐야 하기 때문에 저수준에 해당하는 C++, 어셈블리로 설명한다. 그러나 C++ 를 모르더라도 충분히 이해할 수 있다. 다만 3장 메모리에서는 포인터에 대해 대략적으로 어떤 개념인지 알고 있다면 책을 읽기 훨씬 수월할 것이다.

 

 

 

 

마무리

교과서 같은 내용이기에 가볍게 읽을수도 있는 책이다. 그러나 존 카맥의 조언을 다시 떠올려 컴퓨터 시스템의 본질을 파악하고 고수준부터 저수준까지 동작 방식을 이해하려고 읽는다면 한없이 어렵게 읽히는 책이기도 하다. 현대 컴퓨터 시스템은 추상화가 잘 되어있기 때문에 개발 효율성 측면에서 컴퓨터 내부의 동작 원리까지 파악하는 것은 어찌보면 비효율적일 수 있다. 그러나 컴퓨터 동작 원리를 알게 되면 제품에 버그가 발생했을 때, 어디가 문제인지 빠르게 파악할 수 있다고 믿는다. 더군다나 최적화를 잘 할줄 알게되면 막대한 서버 비용을 감소시킬 수 있다. 그렇기 때문에 시니어 개발자부터 엔지니어급으로 올라가기 위해서는 컴퓨터 동작 원리를 알기 위해 이 책을 읽어보길 적극 추천한다.

 

 

"길벗 24차 개발자 리뷰어 활동을 위해 책을 제공받아 작성된 서평입니다."