serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서

실행 모델의 밑바닥

CPU에서 코루틴까지

컴퓨터가 코드 한 줄을 어떻게 실행하는지에서 시작해, 메모리와 GC → 기다림 → 프로세스 → 컨텍스트 스위치 → 스레드 → 스레드풀 → 이벤트루프 → 코루틴까지 한 계단씩 올라갑니다. 사전 지식 없이 읽을 수 있도록 용어는 쓰기 전에 모두 설명하고, 각 단계가 "왜" 나왔는지를 앞 단계가 남긴 문제에서 이어갑니다. 코드는 특정 언어가 아닌 의사코드이고, 모든 애니메이션은 결정적 시뮬레이터의 실행 결과입니다. 마지막 두 단원은 이 방법들이 왜 하필 그 순서로 태어났는지를 60년 연대기로 꿰고(15단원), 같은 조건에서 실제로 돌린 숫자로 닫습니다(16단원).

새 인터랙티브 원형 · CPU 명령 사이클CPU가 명령을 가져와 실행하는 순간PC, IR, 레지스터와 메모리 사이를 직접 한 단계씩 진행하며 확인합니다. 영상보다 먼저 이 화면으로 방향을 검증합니다.

목차

  1. 01컴퓨터는 무엇으로 되어 있나CPU · 메모리 · 장치 · 운영체제 · "CPU는 언제나 누군가를 실행 중"
  2. 02코드 한 줄은 어떻게 실행되나CPU의 세 동작 · 메모리와 주소 · 레지스터와 PC · 스택과 힙
  3. 03스택과 힙 — 무엇이 어디에 쌓이나지역변수는 스택, 객체는 힙 · 함수와 운명을 같이하는 것과 아닌 것
  4. 04메모리는 왜 차는가 — 그리고 GC할당 · 도달 가능성 · 표시하고 쓸어담기 · GC pause와 retention
  5. 05프로세스 — CPU를 나눠 쓰는 첫 방법프로그램 vs 프로세스 · 주소 공간과 격리 · 시분할이라는 착시
  6. 06CPU는 언제 쉬나 — 인터럽트와 컨텍스트 스위치커널 진입 · 문맥 저장과 복원 · 자발적 양보 vs 선점 · idle
  7. 07기다림의 발견 — IO를 만난 CPU는 논다CPU와 장치의 속도 차이 · 블로킹 · 기다려도 자리는 차지한다
  8. 08스레드 — 프로세스가 무거워서 태어났다무엇을 공유하고 무엇을 따로 갖나 · 세 가지 상태 · 공유의 대가
  9. 09동시성 ≠ 병렬성두 단어의 차이 · CPU-bound와 IO-bound · 스레드를 늘려도 안 되는 경우
  10. 10서버의 방법 ① — 스레드풀요청마다 스레드 하나 · 왜 "풀"인가 · 크기와 비용
  11. 11서버의 방법 ② — 이벤트루프C10K의 답 · 등록하고 즉시 반환 · 커널의 도움(epoll)
  12. 12코루틴 / async-await — 콜백을 동기 모양으로콜백 지옥 · 중단과 재개 · 실행은 이벤트루프 그대로
  13. 13함정 ① — CPU-bound 하나가 루프를 얼린다선점이 있는 스레드풀 vs 선점이 없는 이벤트루프
  14. 14함정 ② — 루프 위의 블로킹 호출블로킹 한 줄이 서버 전체를 세운다
  15. 15어떻게 여기까지 왔나 — 60년의 발전사배치 처리 → 프로세스 → 스레드 → C10K → 이벤트루프 → 코루틴 → 가상 스레드
  16. 16종합 — 같은 일, 네 가지 방법총시간 · 갈아타기 · 메모리 · CPU 활용률을 숫자로