Skip to content

بيئة التشغيل

بيئة تشغيل لغة Go (runtime) هي البنية التحتية الأساسية لتنفيذ برامج Go، وهي مسؤولة عن إدارة تخصيص الذاكرة وجمع القمامة وجدولة الكوروتينات ومراقبة النظام وغيرها من الوظائف الرئيسية. بخلاف اللغات الأخرى، بيئة تشغيل Go مدمجة بشكل وثيق مع كود المستخدم، وهذا يمكّن Go من تحقيق برمجة متزامنة فعالة وإدارة تلقائية للذاكرة.

المكونات الأساسية

تتكون بيئة تشغيل Go بشكل رئيسي من المكونات الأساسية التالية:

جدولة GMP

جدولة GMP هي أحد أهم مكونات بيئة تشغيل Go، وهي مسؤولة عن جدولة أعداد كبيرة من الكوروتينات بشكل معقول على خيوط نظام محدودة للتنفيذ. GMP تمثل:

  • G (Goroutine): الكوروتين، الخيط الخفيف في Go
  • M (Machine): خيط النظام، خيط التنفيذ على مستوى نظام التشغيل
  • P (Processor): المعالج، يحتوي على الموارد اللازمة لتشغيل كود Go

تصميم جدولة GMP يجعل Go قادرًا على دعم آلاف الكوروتينات المتزامنة بكفاءة، وهو حجر الأساس لخصائص التزامن العالي في لغة Go.

مخصص الذاكرة

مخصص ذاكرة Go مسؤول عن إدارة تخصيص ذاكرة الكومة، وتصميمه متأثر بشدة بـ TCMalloc من Google. الخصائص الرئيسية تشمل:

  • تصميم متعدد المستويات للتخزين المؤقت، تقليل تنافس الأقفال
  • استراتيجيات تخصيص مختلفة بناءً على حجم الكائن
  • قرار تلقائي لتخصيص الكائن على المكدس أو الكومة

يعمل مخصص الذاكرة بشكل وثيق مع جامع القمامة، لتحقيق إدارة ذاكرة فعالة معًا.

جامع القمامة

يستخدم Go خوارزمية جمع القمامة بالوسم والمسح المتزامن (Concurrent Mark-Sweep)، الخصائص الرئيسية:

  • خوارزمية الوسم ثلاثي الألوان
  • تقنية حاجز الكتابة لتحقيق الجمع المتزامن
  • كمون منخفض، في معظم الحالات وقت STW أقل من 100 ميكروثانية

جامع القمامة في Go بعد سنوات من التحسين، أصبح قادرًا على تلبية متطلبات الأداء لمعظم سيناريوهات الأعمال.

مراقب النظام

مراقب النظام (sysmon) هو خيط مراقبة مستقل، مسؤول عن:

  • استباق الكوروتينات التي تعمل لفترة طويلة
  • التحقق مما إذا كان يحتاج لتفعيل جمع القمامة
  • مراقبة حالة النظام وإجراء التعديلات المناسبة

يعمل في الخلفية باستمرار، لضمان التشغيل المستقر لبرامج Go.

نصائح التعلم

يُنصح بالتعلم بالترتيب التالي لمعرفة بيئة التشغيل:

  1. أولًا تعلم جدولة GMP، وفهم آلية جدولة الكوروتينات
  2. ثم تعلم مخصص الذاكرة، ومعرفة كيف يتم تخصيص الذاكرة
  3. بعد ذلك تعلم جامع القمامة، وفهم كيف يتم استرداد الذاكرة
  4. أخيرًا تعلم مراقب النظام، ومعرفة آلية المراقبة الخلفية لبيئة التشغيل

Golang تم تحريره بواسطة www.golangdev.cn