Мы используем файлы cookie
Мы используем файлы cookie для улучшения работы сайта и предоставления вам персонализированного опыта. Правила использования файлов cookie можно найти в нашей политике конфиденциальности
Runtime Go состоит из следующих ключевых компонент: планировщик (scheduler), сборщик мусора (garbage collector) и система goroutine'ов.
Планировщик (ोसcheduler): Реализует многопоточность в пространстве пользователя (user-space threading). Он сопоставляет M (many) пользовательских горутин с N (few) потоками операционной системы. Использует модель M:N, которая эффективнее, чем 1:1 (каждая горутина — отдельный поток ОС) или N:1 (все горутины — один поток ОС). Планировщик управляет тремя очередями:
global run queue
): горутины, которые еще не assigned к P.local run queue
): горутины, assigned к конкретной P.wait queue
): горутины, заблокированные по внешним причинам (сеть, файловый ввод/вывод).Модель планировщика основана на P (processor) - логическом процессоре, который связывает G (goroutine) и M (OS thread). M выполняет код G, а P предоставляет ресурсы и контекст для выполнения (локальную очередь горутин, кеш). Планировщик распределяет горутины между доступными M и P.
Сборщик мусора (Garbage Collector - GC): В Go используется конкурентный и параллельный сборщик мусора. Он работает concurrently с пользовательским кодом (stop-the-world фазы минимизированы) и параллельно (использует несколько ядер CPU). Алгоритм Mark-and-Sweep с триколорной схемой.
Финализация объектов также осуществляется runtime'ом.
Goroutine'ы: Легковесные, конкуретные функции, управляемые runtime Go, а не ОС. Они требуют мен
Runtime Go состоит из следующих ключевых компонент: планировщик (scheduler), сборщик мусора (garbage collector) и система goroutine'ов.
Планировщик (ोसcheduler): Реализует многопоточность в пространстве пользователя (user-space threading). Он сопоставляет M (many) пользовательских горутин с N (few) потоками операционной системы. Использует модель M:N, которая эффективнее, чем 1:1 (каждая горутина — отдельный поток ОС) или N:1 (все горутины — один поток ОС). Планировщик управляет тремя очередями:
global run queue
): горутины, которые еще не assigned к P.local run queue
): горутины, assigned к конкретной P.wait queue
): горутины, заблокированные по внешним причинам (сеть, файловый ввод/вывод).Модель планировщика основана на P (processor) - логическом процессоре, который связывает G (goroutine) и M (OS thread). M выполняет код G, а P предоставляет ресурсы и контекст для выполнения (локальную очередь горутин, кеш). Планировщик распределяет горутины между доступными M и P.
Сборщик мусора (Garbage Collector - GC): В Go используется конкурентный и параллельный сборщик мусора. Он работает concurrently с пользовательским кодом (stop-the-world фазы минимизированы) и параллельно (использует несколько ядер CPU). Алгоритм Mark-and-Sweep с триколорной схемой.
Финализация объектов также осуществляется runtime'ом.
Goroutine'ы: Легковесные, конкуретные функции, управляемые runtime Go, а не ОС. Они требуют мен
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.