Golang 기초 다지기 2편 - Go 언어 스케줄러 분석하기

서론 중요! 이 글은 1.27.0 버전을 기준으로 작성한 글이다. 1.27.0 버전 릴리즈 노트 소스코드 올것이 와버렸다. 지난 글에서는 Go 런타임이 무엇인지, 그리고 프로그램이 main.main()에 도달하기까지 어떤 순서로 초기화되는지를 살펴봤다. Scheduler에 대해서는 G, M, P를 중심으로 동작한다는 것과 Local Run Queue, Work Stealing 같은 이름들이 있다는 정도만 확인하고 넘어갔다. 이번 글에서는 그 부분을 runtime/proc.go와 runtime/runtime2.go 파일 같은 실제 고 파일을 보면서 따라가보려고 한다. go doSomething() 코드는 go 키워드 하나뿐이다. 이 한 줄이 실제로 CPU 위에서 실행되기까지 런타임 안에서 어떤 일들이 일어나는지를 확인하는 것이 이번 글의 목표다. ...

2026년 8월 26일 · 26 min

Golang 기초 다지기 1편 - Go 런타임을 이해하기 위한 준비

서론 중요! 이 글은 1.27.0 버전을 기준으로 작성한 글이다. 1.27.0 버전 릴리즈 노트 소스코드 Go 를 공부하다보면 자연스럽게 다음과 같은 단어들을 접하게 된다. 고루틴 고루틴 스케줄러 G-M-P 모델 가비지 컬렉터 각각 독립적인 기능처럼 보이지만, 실제로는 대부분 go runtime 과 밀접하게 관련되어있다. 아래 코드를 살펴보자. package main import "fmt" func main() { fmt.Println("Hello World!") } 이 코드만 보면 단순히 main() 함수에서 시작해 문자열을 출력하고 종료되는것처럼 보인다. 하지만 실제 프로그램이 동작하기 위해서는 보이지 않는 꽤 많은 작업들이 필요하다. ...

2026년 8월 25일 · 9 min