> В чем отличие планировщика Go от планировщика операционной системы (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Ozon

Стек: Go

> Пример ответа

Основное отличие - в уровне абстракции и модели выполнения. Планировщик ОС управляет потоками (kernel threads) на уровне ядра, распределяя их по физическим ядрам процессора. Он работает с системными вызовами, прерываниями и контекстом переключения, который является дорогим (сохранение/восстановление регистров, переключение стека ядра, смена адресного пространства).

Планировщик Go (Goroutine Scheduler) работает на уровне пользовательского пространства и управляет горутинами - легковесными потоками выполнения. Он реализован в рантайме Go и использует модель M:N, где M горутин мультиплексируются на N потоков ОС. Ключевые отличия:

  1. Стоимость переключения: переключение между горутинами значительно дешевле, чем между потоками ОС, так как не требует системных вызовов и сохраняет только минимальный контекст (регистры, стек горутины).

  2. Кооперативность: планировщик Go не вытесняет горутины по таймеру (до Go 1.14), а полагается на точки приостановки (ввод-вывод, системные вызовы, каналы, runtime.Gosched()). Начиная с Go 1.14 добавлена асинхронная вытесняемость для предотвращения длительных вычислений.

  3. Локальность: планировщик Go использует локальные очереди горутин для каждого потока (P - processor), что уменьшает конкуренцию и улучшает кэш-локальность. Планировщик ОС оперирует глобальными очередями потоков.

  4. Масштабирование: горутины позволяют запускать тысячи и миллионы параллельных задач без значительного оверхэда, в то время как потоки ОС ограничены ресурсами ядра (обычно тысячи).

Таким образом, планировщик Go оптимизирован для высококонкурентных приложений с большим количеством легковесных задач, минимизируя накладные расходы на переключение контекста и управление памятью.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью