Оптимизация Go, как в BigTech [Balun Courses]

Vendetta

Администратор
Регистрация
16 Сен 2015
Сообщения
242.572
Реакции
426.072
**Складчина: Оптимизация Go, как в BigTech [Balun Courses]**

Курс поможет решить следующие проблемы:

1. Неразборчивость perf-снимот при написании бизнес-логики и приложений на Go, а также кода в сторонних библиотеках.
2. Неопределенность в оптимизации кода из-за недостаточного понимания его работы за пределами синтаксиса.
3. Желание заниматься более сложными и низкоуровневыми задачами, вместо написания простых фич на работе.
4. Непонимание исходного кода Go из-за недостаточного знания языка и архитектуры компьютера.
5. Трудности на собеседованиях в BigTech из-за нехватки знаний по внутреннему устройству Go и Computer Science.

За 5 недель обучения на практике вы научитесь:

1. Понимать компьютерную науку для работы в BigTech, разбираясь в исполнении кода от синтаксиса до машинных инструкций.
2. Работать с операционной системой, разбираясь в calling convention и вызовах syscall'ов.
3. Использовать ассемблер в Go для оптимизации кода и изучения языковых оптимизаций.
4. Оптимизировать код, основываясь на примерах крупных компаний и низкоуровневого программирования.
5. Углубленно изучить работу low-level пакетов: unsafe и runtime, reflect и debug.
6. Применять профилировщик для оптимизации CPU, памяти и блокировок.
7. Повысить свою ценность в компании и уровень заработной платы благодаря полученным знаниям.

**Программа курса:**

### Основы Computer Science. Часть 1

#### Урок №1 – Микроархитектура процессора

**Внутреннее устройство компьютера:**
- ISA
- Модели памяти
- Организация чипсетов

**Внутреннее устройство процессора:**
- Архитектура CPU
- Многотактовые процессоры
- Конвейер процессора
- Работа с регистрами
- Типы команд
- SMT и hyperthreading
- Примеры процессоров на Verilog

#### Урок №2 – Оперативная и кеш память

**Внутреннее устройство кеша процессора:**
- Кеш линии
- Политики кэширования
- Когерентность кеша
- Уровни кеша
- Чтение и запись в кеш

**Внутреннее устройство оперативной памяти:**
- Memory endian
- Page tables
- Hierarchical page tables
- Трансляция адресов
- Shared memory
- DMA

**Результат:**
- Овладеваете основами Computer Science, необходимыми для работы и собеседований
- Умеете оптимизировать код, понимая его работу "под капотом"

### Основы Computer Science. Часть 2

#### Урок №3 – Архитектура операционных систем

**Введение в операционные системы:**
- Различия между monolitic и micro ядрами
- Примеры операционных систем

**Прерывания и системные вызовы:**
- fork(), exec(), clone()
- Copy on write
- Стеки для пользовательского, ядерного и прерываний
- Примеры Golang syscalls

#### Урок №4 – Управление памятью в ОС

**Механизмы управления памятью:**
- Memory ordering
- Memory reclaim
- Виртуальные и физические адреса
- Memory mapped files
- Фрагментация памяти
- Примеры аллокаторов в xv6

**Абстракции ОС:**
- Процессы, потоки
- Process context
- Interrupt request
- Tasklets
- OOM Killer

**Результат:**
- Освоены основы Computer Science для собеседований и работы
- Умение ускорять код, понимая его работу "под капотом"

**Домашнее задание:**
- Реализовать программы, использующие syscalls и писать свои каналы в Go с использованием syscall pipe

---

Продолжение в следующем сообщении.
 
Сверху