페이징: 고정 크기 블록으로 메모리 분할
메모리를 바둑판처럼 똑같은 크기로 잘라서 관리하자. 외부 단편화를 해결한 현대 OS의 표준 기술.

개발과 기술에 대한 이야기를 기록합니다.
메모리를 바둑판처럼 똑같은 크기로 잘라서 관리하자. 외부 단편화를 해결한 현대 OS의 표준 기술.

내 서버는 왜 걸핏하면 뻗을까? OS가 한정된 메모리를 쪼개 쓰는 처절한 사투. 단편화(Fragmentation)와의 전쟁.

프로세스는 서로 격리되어 있습니다. 근데 어떻게 크롬 브라우저 탭끼리 데이터를 주고받을까요? 파이프부터 소켓까지.

코드는 완벽한데 가끔씩 돈이 사라집니다. 타이밍 이슈가 만드는 최악의 버그.

화장실 키(Mutex)와 레스토랑 대기표(Semaphore)로 이해하는 동기화. 이진 세마포어와 뮤텍스의 결정적 차이(소유권), 스핀락, 모니터, 그리고 우선순위 역전 문제까지.

스레드가 서로를 영원히 기다리는 현상, 데드락. 식사하는 철학자 문제부터 은행원 알고리즘, 리소스 할당 그래프, 분산 시스템에서의 데드락 탐지(Chandy-Misra-Haas)까지 심층 분석합니다.

CPU 스위칭 비용은 왜 비쌀까요? 캐시 오염, TLB 초기화, 커널 모드, vmstat 튜닝, 그리고 리눅스 커널 내부의 switch_to 매크로까지. 성능 최적화의 끝판왕.

서비스 장애 현장에서 반드시 알아야 할 핵심. '프로세스 안의 스레드'만으로는 부족합니다. 공장과 일꾼 비유, 크롬의 멀티 프로세스 구조, fork()와 pthread, 그리고 그린 스레드와 고루틴까지 심층 분석합니다.

악마(Demon)가 아닙니다. 그리스 신화의 '수호신'입니다. 백그라운드에서 묵묵히 일하는 서버의 영웅들.

chmod 777을 치면 해결된다는 선배의 조언, 사실 엄청 위험한 짓이었습니다. rwx와 숫자의 비밀.

우리가 쓰는 iTerm2는 진짜 터미널이 아닙니다. 가짜(Emulator)입니다. 텔레타이프(TTY) 시절의 유물부터 PTY까지.

쉘은 운영체제의 핵심이 아닙니다. 단지 사용자의 명령을 커널에 전달하는 '메신저'일 뿐입니다. zsh, bash가 하는 진짜 역할.

개발자가 직접 하드디스크를 제어할 수 없습니다. 대신 API를 통해 커널에게 '부탁'해야 합니다. 그 부탁의 정체가 바로 시스템 콜입니다.

개발자가 만든 프로그램이 커널 모드에 진입하려고 하면 CPU가 막아섭니다. 왜 컴퓨터는 모드를 두 개로 나눴을까요?

운영체제라는게 사실 프로그램들의 집합이라면, 그 중에서도 가장 핵심이 되는 녀석은 누구일까요? 항상 메모리에 상주하는 커널의 정체.

OS가 없으면 우리는 하드디스크의 몇 번째 섹터에 0과 1을 써야 할지 직접 계산해야 합니다. 리눅스와 윈도우가 대신 해주는 일들.

양자 컴퓨터가 나오면 암호가 다 뚫린다고? 도대체 '큐비트'가 뭐길래 기존 슈퍼컴퓨터를 장난감으로 만드는 걸까? 0과 1의 중첩을 '미로 찾기'에 비유합니다.

비트코인 채굴기들이 처음엔 그래픽카드(GPU)를 쓰다가 왜 ASIC으로 넘어갔을까? '유연함(FPGA)'과 '극한의 효율(ASIC)'의 대결.

사이버펑크 2077에서 'RTX ON'을 켜는 순간 프레임이 반토막 났습니다. 왜 이렇게 사양을 많이 먹나 했더니, 빛의 알갱이 하나하나를 계산하고 있었습니다.

AI 시대의 금광, 엔비디아 GPU. 도대체 게임용 그래픽카드로 왜 AI를 돌리는 걸까? 단순 노동자(CUDA)와 행렬 계산 천재(Tensor)의 차이로 파헤쳐봤습니다.
