1.6Kпросмотров
60.4%от подписчиков
17 января 2026 г.
questionScore: 1.8K
Concurrency, Synchronization and Consistency. Пост № 24. Подводим итоги. Что будет дальше? Пришло время подводить итоги, так как мы рассмотрели основные вызовы и челленджи: - Начали от самых основ связанных с железом и тем как устроена ЭВМ. - Углубились в детали работы процессора, рассмотрели как он эволюционировал со временем, какие трюки и идеи реализовывали инженеры для ускорения.
- Рассмотрели цену каждой такой идеи, ее влияние на программиста и код.
- Рассмотрели инструменты и примитивы позволяющие программистам писать корректные программы и обходить особенности разных моделей памяти.
- Ну и напоследок рассмотрели концептуальные проблемы порождаемые многозадачным программированием. Могу сказать точно - написание цикла постов меня здорово прокачало. Я увидел на практике, что многие вещи которые упоминаются в кабанчике Клеппмана или распределенных системах Таненбаума присущи не только когда у тебя 2 отдельных ЭВМ, но и когда у тебя 2 или более ядер процессора в рамках одной машины. О чем буду писать дальше? С точки зрения хардов мне теперь интересно погрузиться в неблокирующую синхронизацию. Для меня пока это по большей части модное слово которым описывают что-то очень сложное и клевое. Хочется разобраться без прикрас, как обстоят дела на самом деле (вангую что там будет много про атомики). А дальше на этом багаже можно:
- Вернуться к Distributed Systems, "подняться повыше по уровню абстракции"🙂
- На примере какой нибудь OLTP СУБД показать за счет чего работает магия WAL / MVCC / ACID. Если у вас есть идеи что еще можно рассмотреть, не стесняйтесь, пишите в ЛС или комментарии. ——— Спасибо вам, что читали. Буду рад если оставите комментарий с обратной связью по материалам. Мб чего-то не хватило или недостаточно подробно разобрал. Ну и по традиции - материалы пригодившиеся во время написания постов: Hardware
🔥Symmetric Multi-Processing. Linux Kernel Teaching - лекция по ядру Linux объясняющая SMP и то как он реализован в ядре.
🔥Explain the Von Neumann Architecture of A Computer - очень простым языком про архитектуру Фон-Неймана. Cache Coherency
🔥Myths Programmers Believe about CPU Caches - еще раз о том почему важно знать как устроен процессор.
🔥 A Primer on Cache Coherence Protocols - подробный гайд про протоколы когерентности. Mutexes / Spinlocks / Semaphores / RWMutex
🔥Building a Tiny Mutex - название говорит само за себя.
🔥Basics of Futexes - про те самые "быстрые" мьютексы на уровне ядра Linux поверх которых пишутся мьютексы в языках программирования.
🔥Choosing RWMutex + Linear scalable read-write lock - два гайда дающих полную картину по плюсам и минусам RWMutex. Memory Models
🔥Memory Model and Synchronization Primitive Part 1: Memory Barrier + Part 2: Memory Model
🔥Memory Models by Russ Cox (Go tech lead at Google) False Sharing
🔥[Golang] Memory-wall problem - статья про канонический пример демонстрирующий false sharing (обход матрицы) 📖 Оглавление