Показываю как реализован "вытесняющий планировщик" в Го, который дополняет "кооперативный".
00:00 Вступление. Напоминаю о предыдущем видео: https://www.youtube.com/watch?v=NDToH6PMtk0. Кратко упоминаю "вытесняющие" и "кооперативные" планировщики - вся суть сегодняшнего стрима. 01:42 Повторяю что такое "планировщик", как нужно его воспринимать. 03:58 "stack poisoning" как механизм вытеснения. 11:04 "Пролог" пользовательских функций: управляемая память, приращивание стэка автоматически и связь с механизмом вытеснения. 14:23 Конкретный пример в исходном коде Голенга. Системная функция `preemptone`. 19:35 Системная функция `morestack`: святое место автоматического управления стэком. Очень специальная функция, которую я разбираю в деталях. 25:28 Наконец-то, `func newstack()` - именно то место, где происходит вытеснение! 30:40 Выводы. Продолжаю предыдущие стримы о Голоенг. Наконец-то, коснулся фундаментальной темы - "кооперативных" и "вытесняющих" планировщиков как они есть. Принципиально важная тема, особенно для рантаймов, претендующих на выполнение сотен тысяч горутин одновременно! В этом выпуске я в своей манере хожу по исходному коду и показываю в деталях как на самом деле устроен механизм вытеснения, почему они - best effort, показываю и проговариваю принципиальные подвводные камни и учу быть инженером ПО, а не быдлокодером.
Название:
Показываю как реализован "вытесняющий планировщик" в Го, который дополняет "кооперативный".
Категория:
Разное