Предположим, что у нас есть процессор с 20 ядрами и процесс с 20-процентной интенсивностью, независимо от других потоков: один поток на ядро процессора. Я пытаюсь выяснить, происходит ли переключение контекста в этом случае. Я считаю, что это происходит потому, что в операционной системе есть системные процессы, которым также требуется время CPU.
Я понимаю, что существуют разные архитектуры процессора, и некоторые ответы могут отличаться, но можете ли вы объяснить:
- Как происходит переключение контекста, например. на Linux или Windows и некоторые известные архитектуры процессоров? А что происходит под капотом на современном оборудовании?
- Что делать, если у нас есть 10 ядер и 20 потоков или наоборот?
- Как рассчитать, сколько потоков нам нужно, если у нас есть n процессоров?
- Будет ли кеш процессора (L1/L2) пустым после переключения контекста?
Спасибо