第十一屆 佳作

software-dev
入吾 Go 中:走訪 Go 語言內部實作
高魁良

系列文章

DAY 11

第十一天:繼續奮戰 schedinit

前情提要 昨日也追蹤了 schedinit 函式的幾個初始化部份。 schedinit ... 今天看完就可以過半了吧 ... alginit()...

DAY 12

第十二天:簡單除錯 GO 語言程式

前情提要 schedinit 函式終於接近尾聲。昨日追蹤的是與 module、signal 相關的幾項初始化。 schedinit ... goargs(...

DAY 13

第十三天:更多除錯訊息

前情提要 昨日提到除錯選項的 allocfreetrace,但若要觀察 scheduler 行為,hw 範例還是太單薄了一些。 schedinit ......

DAY 14

第十四天:schedinit 告一段落

前情提要 原本打算昨日結束整個 schedinit 部份,但光是寫範例程式和追蹤其中的 P-M-G 關係就花了許多時間... schedinit ......

DAY 15

第十五天:追蹤 newproc

前情提要 昨日終於結束了 schedinit 部份,主要是追 gcinit 函式,還有從比較抽象的角度瀏覽了一些垃圾回收的機制。 退回一層 回到我們之前所在的...

DAY 16

第十六天:newproc1 之前的堆疊準備動作

前情提要 昨日開始了 newproc 函式,概念上應該是要準備一個新的 goroutine 準備執行?通常是用在 go statement 的生成,但是這裡是...

DAY 17

第十七天:看看 systemstack 函式呼叫

前情提要 昨日我們以相當貼近記憶體的方式看完了 newproc 函式,主要是在兜出後續呼叫所需要的參數,為接下來的 systemstack 呼叫作準備。 進入...

DAY 18

第十八天:GO 語言運行模型的三項之力

前情提要 昨日我們簡單路過 systemstack 函式之後開始了 newproc1 函式。 暫停回顧 P-M-G 關係 雖然在第 10 天時有簡單介紹註解中...

DAY 19

第十九天:G 的取得路徑

前情提要 昨日我們都在爬梳註解與其他資料,企圖從比較鳥瞰的角度去觀察排程器與 GO 的系統模型。 acquirem 和 releasem(在 runtime/...

DAY 20

第二十天:新生 goroutine 的初始狀態

前情提要 昨日我們走過 newproc1 函式的最開頭部份;順利的情況下,能夠取得一個新的 G。 使用 gdb 驗證 我們將斷點設在 runtime.newp...