Runtime
Go dilinin runtime'ı Go programı yürütmesinin çekirdek altyapısıdır. Program bellek tahsisi, çöp toplama, goroutine zamanlaması, sistem izleme ve diğer anahtar işlevleri yönetmekten sorumludur. Diğer dillerden farklı olarak, Go'nun runtime'ı kullanıcı koduyla yakından entegredir, bu da Go'nun verimli eşzamanlı programlama ve otomatik bellek yönetimi elde etmesini sağlar.
Çekirdek Bileşenler
Go runtime'ı aşağıdaki çekirdek bileşenlerden oluşur:
GMP Zamanlayıcı
GMP zamanlayıcı Go runtime'ının en çekirdek bileşenlerinden biridir, çok sayıda goroutine'i sınırlı sistem iş parçacıklarında yürütmek için makul şekilde zamanlamaktan sorumludur. GMP şunları temsil eder:
- G (Goroutine): Coroutine, Go'nun hafif iş parçacığı
- M (Machine): Sistem iş parçacığı, işletim sistemi seviyesinde yürütme iş parçacığı
- P (Processor): İşlemci, Go kodunu çalıştırmak için gereken kaynakları içerir
GMP zamanlayıcısının tasarımı Go'nun binlerce eşzamanlı goroutine'i verimli şekilde desteklemesini sağlar, bu da Go dilinin yüksek eşzamanlılık özelliklerinin temel taşıdır.
Bellek Tahsis Edici
Go'nun bellek tahsis edicisi yığın bellek tahsisini yönetmekten sorumludur. Tasarımı Google'ın TCMalloc'undan derinden etkilenmiştir. Ana özellikler şunları içerir:
- Kilit çekişmesini azaltmak için çok seviyeli önbellek tasarımı
- Nesne boyutuna göre farklı tahsis stratejileri
- Nesnelerin yığında mı yoksa yığından mı tahsis edileceğine otomatik karar verir
Bellek tahsis edici, verimli bellek yönetimi elde etmek için çöp toplayıcı ile yakından çalışır.
Çöp Toplayıcı
Go Eşzamanlı İşaretle-Temizle çöp toplama algoritması kullanır. Ana özellikler:
- Üç renkli işaretleme algoritması
- Eşzamanlı toplama için write barrier teknolojisi
- Düşük gecikme, STW süresi çoğu durumda 100 mikrosaniyenin altında
Go'nun çöp toplayıcısı yıllar içinde optimize edildi, çoğu iş senaryosunun performans gereksinimlerini karşılar.
Sistem İzleyici
Sistem izleyici (sysmon) bağımsız bir izleme iş parçacığıdır, şunlardan sorumludur:
- Uzun süre çalışan goroutine'leri önlemek
- Çöp toplamayı tetiklemenin gerekip gerekmediğini kontrol etmek
- Sistem durumunu izlemek ve buna göre ayarlamalar yapmak
Arka planda sürekli çalışır, Go programlarının kararlı çalışmasını sağlar.
Öğrenme Önerileri
Runtime bilgisi için önerilen öğrenme sırası:
- İlk olarak GMP Zamanlayıcı öğrenin, goroutine zamanlama mekanizmasını anlayın
- Sonra Bellek Tahsis Edici öğrenin, belleğin nasıl tahsis edildiğini anlayın
- Ardından Çöp Toplayıcı öğrenin, belleğin nasıl geri dönüştürüldüğünü anlayın
- Son olarak Sistem İzleyici öğrenin, runtime'ın arka plan izleme mekanizmasını anlayın
