컴퓨터 시스템의 여러 주제를 한번에 관통하는 책!
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
작년에 많은 일들이 있어 고사 했음에도 불구하고 올해 다시 좋은 기회로 한빛미디어의 좋은 책들을 소개할 수 있게 되었다. 양질의 번역서와 국내 좋은 저자들의 IT 지식을 접할 수 있게 도와주시는 한빛미디어에게 감사의 말씀 먼저 드린다.
- 원제 : Dive Into Systems: A Gentle Introduction to Computer Systems
- 저자 : Suzanne J. Matthews, Tia Newhall, Kevin C. Webb
- 출간 : No Starch Press, 2022 / 한빛미디어, 2023
오랜만에 기분 좋은 CS 책을 접했다. 컴퓨터 과학이라는 학문의 범위를 넘어 요즘의 컴퓨팅 체계에 대해 호기심을 자극할 수 있는 좋은 내용이 가득 담긴 도서다. ‘딥 다이브’ 라는 이름 답게 프로그래밍에서 CPU 까지 매우 깊은 내용을 다루고 있다. 그러면서도 C언어, CPU 구조, CPU 인스트럭션, 어셈블리, 동시성 프로그래밍을 한번에 관통하도록 구성되어 있다. 보통 이정도 두께의 컴퓨터 서적은 책장에 잘 모셔다 놓고 사전처럼 필요한 부분만 찾아서 읽을때가 많다. 하지만 이 책의 경우엔 컴퓨터 시스템에 관심이 있다면 800여 페이지라는 방대한 양임에도 불구하고 오히려 한번 읽으면 놓을 수 없는 강한 매력이 있다.
이 책은 시작부터 C 프로그래밍 언어, 즉 고수준의 프로그래밍 언어로 컴퓨터 메모리를 어떻게 다루는지 보여준다. 그리고 작성된 코드를 디버거 툴을 통해 실제로 어떻게 작동하는지 메모리 추적의 방법을 알려준다. 단순 디버깅 뿐만 아니라 메모리 누수나 잘못된 메모리 접근을 추적하는 방법도 같이 알려준다. GDB, DDD, valgrind에 관심이 있다면 도움이 될 것이다.
쉴 틈은 없다. CPU 아키텍처를 설명하기 위해 이진수 체계에 대한 설명이 이어진다. 그리고 마이크로프로세서에 대한 내용이 나오는데 보통 이런 컴퓨팅의 역사에 대해 설명하면 ‘인텔이 x86을 만들었다’로 끝나는게 일반적인데 무어법칙 이후에 CPU는 왜 단일 코어에서 멀티 코어 노선을 택했고, 그로 인해 현대의 CPU는 어떤 구조를 갖고있는지 보여준다. 물론 그뿐만 아니라 오버플로, 논리회로, 누산기, 가산기, 그리고 이를 종합한 CPU는 어떤 모습을 갖고 있는지도 설명이 매우 자세하다.
개인적으로 이 책의 꽃이라고 생각하는 어셈블리 파트가 나온다. 나도 코딩은 C로 처음 시작했는데 코드를 컴파일 하면 막연히 CPU 아키텍처에 맞는 바이너리로 변경되고 이것이 어셈블리 인스트럭션이라는 것만 알고 있었는데 이 책에서는 간단한 C 예제 여러가지를 가지고 어떻게 어셈블리로 바뀌고 실제로 메모리 영역을 어떻게 다루는지, 연산과 제어문은 어떻게 실행되는지에 대해 상세하게 알려준다. 이는 코드의 단순 나열이 아니라 실제 과정을 스탭마다 차트로 매우 상세하게 설명해준다.
다음은 성능에 대한 파트인데 이 역시 프로그램의 관점에서 운영체제, 프로세서, 컴파일러가 각각 어떻게 성능을 최적화하는지 설명하고 있다. 또한 성능에서 단골 주제로 나오는 캐시에 대해서도 하드웨어 관점에서 지역성에 따라 캐시 관리를 어떻게 최적화 하는지 상세하게 설명하고 있다. 이때 정보처리기사 같은 자격증 시험에서나 볼법한 스케줄링 기법이 어떻게 작동하고 왜 그런 명칭이 붙었는지 이 책 특유의 친절함으로 자세하게 설명한다.
마지막으로 병렬 프로그래밍 부분으로 앞서 멀티 코어가 대세가 된 마이크로프로세서의 발전 양상으로 스레드 프로그래밍에 대한 주의할 점과 일반적으로 동시성 프로그래밍을 할 때 늘 주의해야 하는 부분에 대해 역시 코드로 잘 설명해준다.
800페이지의 적지 않은 분량임에도 여러 주제를 한번에 꿰는 흡입력이 대단한 책이다. 하나같이 쉽지 않은 주제들을 이토록 이해하기 쉽게 모아놓은 CS.. 아니 컴퓨터 책은 좀처럼 오랜만이다. 놀랍게도 저자는 컴퓨터 전공 1학년생을 대상으로 집필을 했다고 하는데 그럼에도 불구하고 주니어 개발자 까지도 꽤 흥미롭게 볼만한 수준의 내용이라고 생각한다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.