#go_assembler — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #go_assembler, aggregated by home.social.
-
Деконструкция Go: Runtime или программа, которая запускает вашу программу. Часть 3.1
В предыдущих частях мы разобрались с тем, во что превращается Go-код, как процессор работает с памятью и каким образом реализуются примитивные атомарные операции. Но всё это порождает закономерный вопрос. Если CPU умеет выполнять только машинные инструкции, а операционная система знает лишь о процессах и системных потоках, то кто вообще знает о существовании горутин? Кто увеличивает их стеки? Кто решает, какую из них сейчас выполнять? Кто собирает мусор? Ответ на всё это один - Go runtime. Но runtime - это не какая-то магическая программа, которая находится между нашим приложением и операционной системой. Это часть самого приложения. Давайте разбираться!
https://habr.com/ru/articles/1063194/
#go #assembler #runtime #язык_программирования #go_runtime #go_assembler
-
Деконструкция GO: Низкоуровневые концепции. Atomics. Часть 2.1
Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции . Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено. Поэтому, в этой части начнем с самого простого – пакета atomic. Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь , поэтому советую почитать. Там мы даже пишем свой атомарный AND. !Важно! Мы будем разбирать на примере src/internal/runtime/atomics , то есть внутреннего пакета, а не того, который представлен нам как пользователям(потому что в исходниках я не нашел реализации). Но по большей части операции одни и те же.