<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Golang on Sean's Tech and Life Blog</title><link>https://seanlee0923.github.io/tags/golang/</link><description>Recent content in Golang on Sean's Tech and Life Blog</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Wed, 26 Aug 2026 16:33:40 +0900</lastBuildDate><atom:link href="https://seanlee0923.github.io/tags/golang/index.xml" rel="self" type="application/rss+xml"/><item><title>Golang 기초 다지기 2편 - Go 언어 스케줄러 분석하기</title><link>https://seanlee0923.github.io/golang/golang-basic-2-go-scheduler/</link><pubDate>Wed, 26 Aug 2026 16:33:40 +0900</pubDate><guid>https://seanlee0923.github.io/golang/golang-basic-2-go-scheduler/</guid><description>&lt;h4 id="서론"&gt;서론&lt;/h4&gt;
&lt;p&gt;중요! 이 글은 1.27.0 버전을 기준으로 작성한 글이다.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://go.dev/doc/go1.27"&gt;1.27.0 버전 릴리즈 노트&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/golang/go/tree/go1.27.0"&gt;소스코드&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;올것이 와버렸다.&lt;/p&gt;
&lt;p&gt;지난 글에서는 Go 런타임이 무엇인지, 그리고 프로그램이 &lt;code&gt;main.main()&lt;/code&gt;에 도달하기까지 어떤 순서로 초기화되는지를 살펴봤다.&lt;/p&gt;
&lt;p&gt;Scheduler에 대해서는 &lt;code&gt;G&lt;/code&gt;, &lt;code&gt;M&lt;/code&gt;, &lt;code&gt;P&lt;/code&gt;를 중심으로 동작한다는 것과 Local Run Queue, Work Stealing 같은 이름들이 있다는 정도만 확인하고 넘어갔다.&lt;/p&gt;
&lt;p&gt;이번 글에서는 그 부분을 &lt;code&gt;runtime/proc.go&lt;/code&gt;와 &lt;code&gt;runtime/runtime2.go&lt;/code&gt; 파일 같은 실제 고 파일을 보면서 따라가보려고 한다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;go&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;doSomething&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;코드는 &lt;code&gt;go&lt;/code&gt; 키워드 하나뿐이다.&lt;/p&gt;
&lt;p&gt;이 한 줄이 실제로 CPU 위에서 실행되기까지 런타임 안에서 어떤 일들이 일어나는지를 확인하는 것이 이번 글의 목표다.&lt;/p&gt;</description></item><item><title>Golang 기초 다지기 1편 - Go 런타임을 이해하기 위한 준비</title><link>https://seanlee0923.github.io/golang/golang-basic-1-go-runtime/</link><pubDate>Tue, 25 Aug 2026 10:29:04 +0900</pubDate><guid>https://seanlee0923.github.io/golang/golang-basic-1-go-runtime/</guid><description>&lt;h4 id="서론"&gt;서론&lt;/h4&gt;
&lt;p&gt;중요! 이 글은 1.27.0 버전을 기준으로 작성한 글이다.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://go.dev/doc/go1.27"&gt;1.27.0 버전 릴리즈 노트&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/golang/go/tree/go1.27.0"&gt;소스코드&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Go 를 공부하다보면 자연스럽게 다음과 같은 단어들을 접하게 된다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;고루틴&lt;/li&gt;
&lt;li&gt;고루틴 스케줄러&lt;/li&gt;
&lt;li&gt;G-M-P 모델&lt;/li&gt;
&lt;li&gt;가비지 컬렉터&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;각각 독립적인 기능처럼 보이지만, 실제로는 대부분 go runtime 과 밀접하게 관련되어있다.&lt;/p&gt;
&lt;p&gt;아래 코드를 살펴보자.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이 코드만 보면 단순히 main() 함수에서 시작해 문자열을 출력하고 종료되는것처럼 보인다.&lt;/p&gt;
&lt;p&gt;하지만 실제 프로그램이 동작하기 위해서는 보이지 않는 꽤 많은 작업들이 필요하다.&lt;/p&gt;</description></item></channel></rss>