- Почему эти переключатели контекста в пользовательском пространстве работают быстрее, чем переключатели контекста потока ядра?
Поскольку ЦПУ не нужно переключаться в режим ядра и обратно в режим пользователя.
- Что именно делает переключение контекста ядра, что намного дороже?
В основном переключение в режим ядра. IIRC, таблицы страниц одинаковы в режиме ядра и режиме пользователя в Linux, поэтому, по крайней мере, штраф за недействительность TLB отсутствует.
- Насколько точно стоит переключение контекста ядра? Сколько времени это займет?
Требуется измерение и может варьироваться от машины к машине. Я полагаю, что типичная настольная / серверная машина в наши дни может выполнять несколько сотен тысяч переключений контекста в секунду, возможно, несколько миллионов.
- Зависит ли время переключения контекста ядра от количества потоков?
Зависит от того, как планировщик ядра справляется с этим. AFAIK, в Linux это довольно эффективно, даже с большим количеством потоков, но больше потоков означает, что больше использования памяти означает большее давление в кеше и, следовательно, вероятно, более низкую производительность. Я также ожидаю некоторых накладных расходов, связанных с обработкой тысяч сокетов.