Chapter 14
클릭 한 번의 여행
지금까지 컴퓨터의 부품과 계층을 하나씩 따로 살펴봤다. 이 장에서는 모두를 한 무대에 올린다. 메신저 앱에서 친구에게 “안녕”이라고 쓰고 전송 버튼을 누르는, 하루에도 수십 번 하는 동작 하나를 슬로 모션으로 따라가 보자. 놀랍게도 이 책의 거의 모든 장이 그 0.1초 안에 등장한다.
- 입력부터 출력까지 하드웨어, 운영체제, 앱, 네트워크가 주고받는 일을 하나의 흐름으로 연결한다.
- 각 단계가 어느 장의 개념인지 짚으며 전체 내용을 복습한다.
- 단계별 소요 시간을 비교해 “어디가 오래 걸리는지” 감각을 기른다.
“안녕”의 여행: 한 단계씩
아래 무대는 위에서부터 내 휴대폰의 앱, 운영체제, 하드웨어, 그리고 오른쪽의 인터넷과 서버, 친구의 휴대폰으로 이루어져 있다. “다음”을 누를 때마다 데이터가 움직이고, 아래 타임라인에 시간이 쌓인다.
SIMULATOR
메시지 한 통의 0.1초
진행
아래 막대는 각 단계가 걸린 시간이다(로그 눈금: 한 칸에 10배). CPU와 운영체제 안의 일은 마이크로초 단위지만, 화면 갱신을 기다리거나 네트워크를 건너는 일은 밀리초 단위다. 사용자가 느끼는 속도는 대개 가장 느린 구간, 즉 거리와 빛의 속도가 정한다.
여행에서 발견한 것들
이 여행에서 몇 가지 큰 원리가 반복해서 나타났다. 컴퓨터를 이해하는 핵심 아이디어들이다.
- 모든 것은 숫자다. 글자 “안녕”은 UTF-8 바이트가 되고, 화면의 픽셀은 RGB 숫자가 되고, 명령어도 숫자였다(2·4장).
- 계층과 추상화. 메신저 앱은 SSD의 블록도, Wi-Fi 전파도 모른다. 아래 계층이 쉬운 창구(파일, 소켓, 시스템 콜)를 제공하기 때문이다(8·10장).
- 가까운 곳에 두기. 레지스터, 캐시, 메모리, SSD, 그리고 서버의 CDN까지. 느린 곳을 덜 가게 만드는 것이 성능의 핵심이었다(6·11장).
- 동시에, 그리고 겹쳐서. 파이프라인, 멀티코어, GPU의 수천 유닛, TCP 윈도우 모두 “기다리는 동안 다른 일 하기”다(5·10·12장).
- 관리자는 필요하다. 인터럽트, 스케줄링, 가상 메모리, 보호. 수십 개의 앱이 싸우지 않고 하나의 하드웨어를 나눠 쓰게 하는 것이 운영체제다(8·9장).
- 물리 법칙은 피할 수 없다. 전력과 열은 클럭을, 빛의 속도는 네트워크 지연을 묶어 둔다(5·10장).
한눈에 보는 이 책
| 장 | 한 문장 요약 | 주방 비유 |
|---|---|---|
| 01 컴퓨터 | 프로그램에 따라 데이터를 처리하는 기계. | 주방 전체 |
| 02 비트 | 모든 정보는 0과 1의 패턴과 해석의 약속이다. | 재료의 표준 규격 |
| 03 논리 | 스위치를 엮어 계산(덧셈기)과 기억(래치)을 만든다. | 칼과 냄비 |
| 04 CPU | 명령을 가져오고, 해석하고, 실행하기를 반복한다. | 요리사 |
| 05 성능 | 겹쳐 하고(파이프라인), 짐작하고(예측), 나눠 한다(멀티코어). | 요리사의 요령 |
| 06 메모리 | 가까울수록 빠르고 작다. 캐시는 지역성에 기댄다. | 손·선반·조리대 |
| 07 저장 | 꺼져도 남는 창고. 파일 시스템이 정리한다. | 창고와 냉장고 |
| 08 OS | 자원을 나누고, 쉬운 창구를 주고, 서로를 보호한다. | 주방장 |
| 09 가상 메모리 | 프로그램마다 자기만의 주소 공간이라는 착시를 준다. | 호텔 객실 번호 |
| 10 네트워크 | 패킷으로 쪼개 계층별 봉투에 넣어 라우터가 한 걸음씩 나른다. | 엽서 배달 |
| 11 웹 | DNS → 연결 → 암호화 → 요청 → 렌더링. | 배달 주문 |
| 12 GPU | 독립적인 같은 일을 수천 유닛이 동시에. | 보조 요리사 군단 |
| 13 프로그램 | 소스 코드 → 기계어, 스택과 힙 위에서 실행된다. | 레시피 번역 |
다음 걸음
더 깊이 공부하고 싶다면 대학 컴퓨터공학과의 “컴퓨터 구조”, “운영체제”, “컴퓨터 네트워크”, “컴파일러” 과목이 이 책의 각 부분을 한 학기씩 다룬다. 직접 만들어 보고 싶다면 NAND 게이트에서 시작해 컴퓨터와 운영체제까지 쌓아 올리는 공개 강좌 Nand2Tetris를 추천한다. 그리고 다음 장의 용어집과 종합 퀴즈로 지금까지의 내용을 점검해 보자.
핵심 정리
- 메시지 하나를 보내는 데 입력 장치, 인터럽트, 운영체제, CPU, 메모리, 저장장치, 네트워크, 서버, GPU, 화면이 모두 참여한다.
- 각 계층은 아래 계층의 세부 사항을 모른 채 정해진 창구로만 협력한다.
- 컴퓨터 안의 일은 나노초~마이크로초, 네트워크 너머의 일은 밀리초 단위다. 체감 속도는 가장 느린 구간이 정한다.
확인 퀴즈
키보드에서 글자를 누른 사실을 CPU가 알게 되는 방법은?
인터럽트(8장) 덕분에 CPU는 계속 물어보지 않아도 사건을 즉시 알 수 있다.
메신저 앱이 메시지를 네트워크로 보낼 때 직접 Wi-Fi 칩을 조작하지 않는 이유는?
보호와 추상화(8장). 앱은 “이 데이터를 저 서버로 보내 줘”라고만 요청한다.
메시지 전송 과정에서 보통 가장 오래 걸리는 구간은?
컴퓨터 안의 일은 µs 단위, 네트워크 왕복은 수십 ms다. 1장의 시간 변환기로 치면 몇 년 차이다.