何為runtime?
很多語言都有 Runtime
go的runtime特點
- 沒有虛擬機器的概念
- Runtime 作為程式的一部分打包進二進位制產物
- Runtime 隨使用者程式一起執行
- Runtime 與使用者程式沒有明顯界限,直接透過函式呼叫
- 記憶體管理能力
- 垃圾回收能力(GC)
- 超強的併發能力(協程排程)
總結:
- Go 的 Runtime 負責記憶體管理、垃圾回收、協程排程
- Go 的 Runtime 被編譯為使用者程式的一部分,一起執行
go的編譯過程
詞法分析:
句法分析
語義分析
中間碼生成(SSA)
機器碼生成
- 先生成Plan9彙編程式碼
- 最後編譯為機器碼
連結
- 將各個包進行連結,包括runtime
go程式是如何執行的,是main()方法嗎?
- runtime/rt0 XXX.s