Chapter 14

클릭 한 번의 여행

지금까지 컴퓨터의 부품과 계층을 하나씩 따로 살펴봤다. 이 장에서는 모두를 한 무대에 올린다. 메신저 앱에서 친구에게 “안녕”이라고 쓰고 전송 버튼을 누르는, 하루에도 수십 번 하는 동작 하나를 슬로 모션으로 따라가 보자. 놀랍게도 이 책의 거의 모든 장이 그 0.1초 안에 등장한다.

“안녕”의 여행: 한 단계씩

아래 무대는 위에서부터 내 휴대폰의 앱, 운영체제, 하드웨어, 그리고 오른쪽의 인터넷과 서버, 친구의 휴대폰으로 이루어져 있다. “다음”을 누를 때마다 데이터가 움직이고, 아래 타임라인에 시간이 쌓인다.

SIMULATOR

메시지 한 통의 0.1초

진행 0
아래 막대는 각 단계가 걸린 시간이다(로그 눈금: 한 칸에 10배). CPU와 운영체제 안의 일은 마이크로초 단위지만, 화면 갱신을 기다리거나 네트워크를 건너는 일은 밀리초 단위다. 사용자가 느끼는 속도는 대개 가장 느린 구간, 즉 거리와 빛의 속도가 정한다.

여행에서 발견한 것들

이 여행에서 몇 가지 큰 원리가 반복해서 나타났다. 컴퓨터를 이해하는 핵심 아이디어들이다.

  1. 모든 것은 숫자다. 글자 “안녕”은 UTF-8 바이트가 되고, 화면의 픽셀은 RGB 숫자가 되고, 명령어도 숫자였다(2·4장).
  2. 계층과 추상화. 메신저 앱은 SSD의 블록도, Wi-Fi 전파도 모른다. 아래 계층이 쉬운 창구(파일, 소켓, 시스템 콜)를 제공하기 때문이다(8·10장).
  3. 가까운 곳에 두기. 레지스터, 캐시, 메모리, SSD, 그리고 서버의 CDN까지. 느린 곳을 덜 가게 만드는 것이 성능의 핵심이었다(6·11장).
  4. 동시에, 그리고 겹쳐서. 파이프라인, 멀티코어, GPU의 수천 유닛, TCP 윈도우 모두 “기다리는 동안 다른 일 하기”다(5·10·12장).
  5. 관리자는 필요하다. 인터럽트, 스케줄링, 가상 메모리, 보호. 수십 개의 앱이 싸우지 않고 하나의 하드웨어를 나눠 쓰게 하는 것이 운영체제다(8·9장).
  6. 물리 법칙은 피할 수 없다. 전력과 열은 클럭을, 빛의 속도는 네트워크 지연을 묶어 둔다(5·10장).

한눈에 보는 이 책

장한 문장 요약주방 비유
01 컴퓨터프로그램에 따라 데이터를 처리하는 기계.주방 전체
02 비트모든 정보는 0과 1의 패턴과 해석의 약속이다.재료의 표준 규격
03 논리스위치를 엮어 계산(덧셈기)과 기억(래치)을 만든다.칼과 냄비
04 CPU명령을 가져오고, 해석하고, 실행하기를 반복한다.요리사
05 성능겹쳐 하고(파이프라인), 짐작하고(예측), 나눠 한다(멀티코어).요리사의 요령
06 메모리가까울수록 빠르고 작다. 캐시는 지역성에 기댄다.손·선반·조리대
07 저장꺼져도 남는 창고. 파일 시스템이 정리한다.창고와 냉장고
08 OS자원을 나누고, 쉬운 창구를 주고, 서로를 보호한다.주방장
09 가상 메모리프로그램마다 자기만의 주소 공간이라는 착시를 준다.호텔 객실 번호
10 네트워크패킷으로 쪼개 계층별 봉투에 넣어 라우터가 한 걸음씩 나른다.엽서 배달
11 웹DNS → 연결 → 암호화 → 요청 → 렌더링.배달 주문
12 GPU독립적인 같은 일을 수천 유닛이 동시에.보조 요리사 군단
13 프로그램소스 코드 → 기계어, 스택과 힙 위에서 실행된다.레시피 번역
다음 걸음

더 깊이 공부하고 싶다면 대학 컴퓨터공학과의 “컴퓨터 구조”, “운영체제”, “컴퓨터 네트워크”, “컴파일러” 과목이 이 책의 각 부분을 한 학기씩 다룬다. 직접 만들어 보고 싶다면 NAND 게이트에서 시작해 컴퓨터와 운영체제까지 쌓아 올리는 공개 강좌 Nand2Tetris를 추천한다. 그리고 다음 장의 용어집과 종합 퀴즈로 지금까지의 내용을 점검해 보자.

핵심 정리

  1. 메시지 하나를 보내는 데 입력 장치, 인터럽트, 운영체제, CPU, 메모리, 저장장치, 네트워크, 서버, GPU, 화면이 모두 참여한다.
  2. 각 계층은 아래 계층의 세부 사항을 모른 채 정해진 창구로만 협력한다.
  3. 컴퓨터 안의 일은 나노초~마이크로초, 네트워크 너머의 일은 밀리초 단위다. 체감 속도는 가장 느린 구간이 정한다.

확인 퀴즈

키보드에서 글자를 누른 사실을 CPU가 알게 되는 방법은?

인터럽트(8장) 덕분에 CPU는 계속 물어보지 않아도 사건을 즉시 알 수 있다.

메신저 앱이 메시지를 네트워크로 보낼 때 직접 Wi-Fi 칩을 조작하지 않는 이유는?

보호와 추상화(8장). 앱은 “이 데이터를 저 서버로 보내 줘”라고만 요청한다.

메시지 전송 과정에서 보통 가장 오래 걸리는 구간은?

컴퓨터 안의 일은 µs 단위, 네트워크 왕복은 수십 ms다. 1장의 시간 변환기로 치면 몇 년 차이다.