태그: #concurrency
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 18 편
커널 C는 응용 C가 아니다 — 메모리 할당과 동시성의 규칙
문법은 같은 C인데 규칙이 다릅니다. 커널에서는 어떤 함수를 어디서 부를 수 있는지가 문맥에 따라 갈리고, 그 규칙을 어기면 컴파일은 통과하고 대신 시스템이 멈춥니다. 이 글은 그 규칙들을 공식 문서 기준으로 정리합니다. 먼저 스택이 사용자 공간의 수백분의 일이라는 사실에서 출발해, kmalloc과 vmalloc과 kvmalloc이 언제 갈리는지, GFP 플래그가 실제로 무엇을 허용하고 금지
2026-08-19 · 31 분 읽기 #linux#kernel#kmalloc#gfp#spinlock동시성 완전 가이드: 공유 상태를 줄여 나가는 순서
애플리케이션 설계자가 동시성 문제를 다룰 때 밟는 작업 순서를 정리합니다. 공유 상태를 없앨 수 있는지부터 확인하고, 없앨 수 없으면 범위를 좁히고, 남은 것에 원자성 경계와 잠금을 씌우고, 프로세스 밖으로 나가면 트랜잭션과 멱등성으로 지키고, 마지막에 테스트로 확인합니다. 개념 구분이나 인프라 비교가 아니라 코드를 쓰는 사람의 결정 순서에 초점을 둡니다.
2026-08-15 · 45 분 읽기 #동시성#아키텍처#concurrency#locking#backpressure타입 검사기를 통과한 두 서비스가 서로를 기다리며 멈출 때 — 코레오그래피라는 다른 접근
메모리 안전을 보장하는 언어를 써도 두 서비스가 서로의 메시지를 기다리며 멈추는 일은 막지 못합니다. 타입 검사기의 시야가 프로세스 하나에서 끝나기 때문입니다. 코레오그래피 프로그래밍은 시스템 전체를 하나의 프로그램으로 쓰고 컴파일러가 노드별 코드를 뽑아내게 해서 이 경계 자체를 없앱니다. 최근 공개된 Wyzer를 실마리로, 엔드포인트 프로젝션이 무엇이고 왜 데드락이 설계상 사라지는지, 그리
2026-08-09 · 14 분 읽기 #programming-languages#compiler#distributed-systems#type-systems#concurrencySQLite WAL-reset 버그 — 15년을 숨어 있던 데이터 손상 경합
2026년 3월 3일, SQLite 개발자 Dan이 WAL 모드에서 드물게 데이터베이스를 손상시킬 수 있는 데이터 경합을 찾아 고쳤습니다. 이 버그는 WAL이 도입된 3.7.0(2010-07-21)부터 3.51.2(2026-01-09)까지 모든 버전에 들어 있었고, 3.51.3(2026-03-13)에서 수정됐습니다. 원인은 wal-index 헤더의 nBackfill 필드 하나를 서로 다른 두
2026-07-16 · 35 분 읽기 #sqlite#wal#database-internals#concurrency#data-racePython 3.15의 abi3t — free-threaded 빌드용 stable ABI가 푸는 문제와 그 대가
PEP 779로 free-threaded 빌드는 3.14에서 실험 딱지를 뗐지만, 기본 빌드가 되는 Phase III 앞에는 인터프리터 성능 말고 하나가 더 있었습니다 — 배포입니다. free-threaded 빌드에서는 stable ABI(abi3)를 쓸 수 없어서, C 확장 저자들은 파이썬 버전 × 스레딩 모드마다 휠을 따로 찍어야 했습니다. PEP 803은 이 구멍을 abi3t라는 sta
2026-07-16 · 23 분 읽기 #python#free-threaded#cpython#concurrency#pep-703동시성 vs 병렬성 — 다루기와 실제로 하기의 차이
Rob Pike의 유명한 구분 — 동시성은 여러 일을 "다루는" 것이고, 병렬성은 여러 일을 "동시에 하는" 것입니다. 스레드와 이벤트 루프, 경쟁 조건과 데이터 레이스, 뮤텍스와 데드락, 식사하는 철학자, 원자적 연산, 그리고 언제 async(I/O)가 이기고 언제 스레드(CPU)가 이기는지를 정리합니다.
2026-07-03 · 24 분 읽기 #concurrency#systems#fundamentalsLock-Free 동시성 프로그래밍 완전 가이드 2025: Atomics, 메모리 모델, CAS, 무잠금 자료구조
Lock-Free 프로그래밍의 모든 것! Atomics 원리, CPU 메모리 모델(x86 vs ARM), CAS(Compare-And-Swap), Lock-Free 자료구조(Queue/Stack/Hash), ABA 문제, Hazard Pointer, Read-Copy-Update(RCU), Java/Rust/C++ 비교, 성능 측정.
2026-04-15 · 17 분 읽기 #lock-free#concurrency#atomics#memory-model#casPython GIL & CPython 내부 완전 가이드 2025: Global Interpreter Lock, Bytecode, No-GIL, Subinterpreters, Async 심층 분석
Python이 왜 스레드에서 느린가? CPython의 bytecode interpreter, GIL의 진짜 이유, asyncio 이벤트 루프, PEP 703 (No-GIL Python), subinterpreters까지 — CPython의 내부를 720줄로 완전 분석한다.
2026-04-15 · 28 분 읽기 #python#cpython#gil#asyncio#no-gilNUMA & Cache Coherence 완전 가이드 2025: MESI 프로토콜, False Sharing, Memory Ordering — 멀티코어 성능의 진짜 벽
2개 스레드가 같은 cache line을 만지면 왜 10배 느려지는가? NUMA 아키텍처, MESI 프로토콜, false sharing, memory barriers, 실전 성능 튜닝까지 — 멀티코어 시스템의 숨은 벽을 720줄로 완전 분석한다.
2026-04-15 · 52 분 읽기 #numa#mesi#cache-coherence#false-sharing#memory-orderingRust Tokio 런타임 Deep Dive — Future, Waker, Work-Stealing, Pin, Zero-Cost Async 완전 정복 (2025)
Rust의 async/await은 "무한한 동시성을 런타임 없이" 약속하지만, 그 내부는 복잡합니다. 이 글은 Tokio 런타임을 처음부터 해부합니다. async fn이 어떻게 State Machine으로 컴파일되는지, Future/Poll/Waker 프로토콜, Pin과 자체 참조 구조체의 안전성, Tokio 스케줄러의 Work-Stealing과 LIFO slot, 블로킹 작업 처리(spaw
2026-04-15 · 42 분 읽기 #rust#tokio#async#runtime#concurrencyGo 런타임 스케줄러 Deep Dive — GMP 모델, Work-Stealing, 비동기 Preemption, netpoller 완전 정복 (2025)
Go의 가벼운 고루틴이 어떻게 수십만 개씩 동작하는지 궁금했다면, 이 글은 Go 런타임 내부를 해부합니다. GMP 스케줄러 구조, Local Run Queue와 Work-Stealing, 고루틴 스택의 동적 증가(Copy-on-Grow), cooperative에서 asynchronous로 진화한 Preemption, netpoller와 syscall handoff, GC와 스케줄러의 상호작용
2026-04-15 · 48 분 읽기 #go#golang#runtime#scheduler#goroutineGo 완전 가이드 — Goroutine·Channel·Context·실전 마이크로서비스까지 (Season 2 Ep 3, 2025)
Go는 "배우기 쉽고 쓰기 쉽다"고 알려졌지만, 실제 프로덕션 Go 코드베이스에 들어가면 Context 전파, Goroutine 누수, Channel 데드락, nil interface 같은 비자명한 함정들이 즐비하다. 이 글은 Go의 철학적 선택(Less is more)의 진짜 의미, Goroutine/Channel이 Rust async와 어떻게 다른가, errgroup·sync 패키지의 실
2026-04-15 · 20 분 읽기 #go#golang#goroutine#channel#contextActor Model 완전 가이드 2025: Erlang OTP, Akka, Orleans, Elixir — 수백만 동시성을 다루는 진짜 방법
WhatsApp이 2백만 TCP 연결을 하나의 서버에서 처리한 비결. Actor 모델의 수학적 기반부터 Erlang OTP, Akka, Microsoft Orleans까지 — Let it crash 철학과 수백만 동시성의 비밀을 720줄로 완전 분석한다.
2026-04-15 · 51 분 읽기 #actor-model#erlang#akka#orleans#elixir분산 락 완전 가이드 2025: Redlock, Zookeeper, etcd, Fencing Token, 안전한 구현
분산 락의 모든 것! 왜 어려운가, Redis 단일 락, Redlock 알고리즘, Martin Kleppmann의 비판, Zookeeper/etcd 기반 락, Fencing Token, 실전 구현, 함정 회피.
2026-04-15 · 18 분 읽기 #distributed-lock#redis#redlock#zookeeper#etcd동시성 & 병렬 프로그래밍 완전 가이드 2025: Async/Await, Thread, Goroutine, Actor 모델
동시성/병렬 프로그래밍의 모든 것! Thread vs Coroutine vs Goroutine, Async/Await 패턴, Event Loop(Node.js/Python), Actor 모델(Erlang/Akka), Lock-free 자료구조, 데드락/레이스컨디션 방지, Channel/CSP, 성능 최적화.
2026-04-14 · 35 분 읽기 #concurrency#parallelism#async-await#thread#goroutineGo 프로그래밍 완전 가이드 — 고루틴, 채널, 인터페이스, 실전 패턴
왜 Go인가? 고루틴과 채널로 동시성 프로그래밍, 인터페이스, 에러 처리, 제네릭, 실전 웹 서버까지 Go의 모든 것.
2026-04-12 · 21 분 읽기 #ai#go#golang#programming#concurrencyGo 언어 완전 가이드 2025: 고루틴, 채널, 인터페이스부터 프로덕션 패턴까지
Go 언어의 모든 것! 고루틴/채널 동시성, 인터페이스와 덕 타이핑, 에러 처리 패턴, 제네릭(1.18+), 구조체와 메서드, 테스트, 프로파일링, gRPC/REST 서버, CLI 도구, Docker 최적화 빌드까지.
2026-03-23 · 35 분 읽기 #go#golang#goroutine#channel#interface동시성과 병렬성 완전 정복: 멀티스레딩, 비동기, 이벤트 루프의 모든 것
동시성과 병렬성의 근본적 차이부터! 스레드 vs 코루틴 vs 가상 스레드, 이벤트 루프(Node.js), Actor 모델(Erlang/Akka), Lock-free 자료구조, 언어별 동시성(Go/Java/Python/Rust/JS) 비교, 실전 패턴까지.
2026-03-23 · 32 분 읽기 #concurrency#parallelism#multithreading#async#event-loop