Понимание среды выполнения Go — Хесус Эспино
GoLab conference
0:00 / 0:00
Понимание среды выполнения Go — Хесус Эспино
4 308 просмотров · 2 года назад
GoLab conference
3,93 тыс. подписчиков
4 308 просмотров · 2 года назад
🔔 ПОДПИСЫВАЙТЕСЬ НА КАНАЛ GOLAB 🔔
АННОТАЦИЯ:
Среда выполнения Go является неотъемлемой частью каждого скомпилированного бинарного файла Go. Понимание того, что она делает для нас и какую цену мы за это платим, может быть интересным.
В этом докладе мы рассмотрим, что делает среда выполнения внутри и что она нам предоставляет.
Язык Go — это мощный инструмент, основанный главным образом на двух компонентах: компиляторе Go, который преобразует наш код в исполняемый бинарный файл, и среде выполнения — большом фрагменте существующего кода, скомпилированном вместе с нашим кодом. Этот доклад посвящен последней, той части программного обеспечения, которая включает в себя такие вещи, как сборщик мусора, планировщик, горутины, карты, каналы...
В этом докладе мы рассмотрим объяснение того, что такое среда выполнения Go и что она содержит. Также мы поговорим обо всех процессах инициализации и о том, что делает среда выполнения после того, как все инициализировано и наш код запущен.
Мы поговорим об инициализации сборщика мусора и планировщика, о запуске нашей главной функции в Go-рутине, а также кратко объясним, что происходит после этого, например, планирование горутин и управление памятью.
СЦЕНАРИЙ ДОКЛАДА
Введение
Я начну с объяснения того, что такое среда выполнения Go в общем виде, что она делает (управление памятью, параллелизм, встроенные структуры данных...) и каковы её недостатки (большие бинарные файлы, немного более медленный процесс запуска, чем у других компилируемых языков, некоторые дополнительные затраты на выполнение...).
После того, как мы определимся с общим представлением о среде выполнения, я начну с самого начала: где находится код среды выполнения Go и как он попадает в наши бинарные файлы. Как процесс компоновки включает нашу программу Go и среду выполнения Go.
Подробный анализ инициализации
После этого мы начнём анализировать, что происходит во время выполнения с момента начала выполнения бинарного файла до момента достижения главной функции.
Это основная часть доклада, здесь я расскажу о:
Ассемблерном коде, запускающем выполнение
Инициализации на основе операционной системы
Инициализации планировщика
Инициализации кучи/стека
Инициализации сборщика мусора
И некоторых других небольших деталях инициализации.
Здесь я подробно расскажу, что подразумевает вся эта инициализация и почему она необходима.
Подробный анализ процесса выполнения
После этого мы поговорим о первой горутине, которая будет создана для нашей основной функции. Я дам краткий обзор того, что такое горутина и процесс её создания. И как создаётся и выполняется горутина для основной функции.
После запуска нашей основной функции я хочу рассмотреть некоторые другие процессы, происходящие во время выполнения нашего бинарного файла, такие как сборка мусора, парковка горутин (и вытеснение), а также некоторые вещи, определенные в рамках среды выполнения, такие как карты, срезы и каналы...
Наконец, я быстро покажу, что происходит, когда наш бинарный файл завершает свое выполнение.
Краткое резюме всего, что мы увидели, некоторые выводы и ссылки для дальнейшего изучения.
Этот канал посвящен видео с конференции GoLab.
💛 Подписывайтесь на нас в TWITTER:
/golab_conf
💜 Подписывайтесь на нас в FACEBOOK:
/golabconf
GoLab — первая итальянская международная конференция по языку программирования Go, организованная компанией Develer.
Develer — это не просто итальянская компания, разрабатывающая и выпускающая аппаратные и программные решения для промышленной среды, но и сообщество людей, разделяющих свою огромную страсть к новым технологиям и тому, как их можно применять в повседневной жизни.
🔸 Подписывайтесь на DEVELER в INSTAGRAM:
/ носитьдевеллер
🔹 Следите за DEVELER на FACEBOOK:
/ мы.разработчики
🔸 Следите за DEVELER в TWITTER:
/ разработчик
🔹 Следите за DEVELER на LINKEDIN:
/ 114426
🔸 Следите за DEVELER в TELEGRAM: https://t.me/wearedeveler
🔹 Подписывайтесь на DEVELER в TIK TOK:
/ носитьдевеллер