Skip to content

Планировщик и переключение контекста

Допустим у нас 10ядер 100потоков и нам нужно чтобы каждый поток побывал на каком либо ядре.

ОС берет какие-то потоки из тех, которым нужно процессорное время, отправляет их на ядра доступные и потом через какое-то время снимает с ядер и отправляет туда уже другие потоки, которые ждут в очереди.

Этот механизм Планирование и под "капотом" происходит Переключение контекста.

Контекст потока - то состояние регистров ядра процессора(включая указатель на стек), в момент когда ОС пришла и начала снимать поток с ядра и записывать в ОП(ведь когда поток исполняется на ядре процессора у него регистры переключаются в разные состояния, в них записываются разные данные).

Когда идет переключение контекста - планировщик ОС берет и состояние регистра потоков в момент переключения считывает и записывает в ОП, а в оперативной памяти уже находятся стек и куча, на которые указывает поток.