«Когда пользовательский процесс выполняет системный вызов, запускается процесс ядра» - не совсем, код ядра вызывается.Любой системный вызов неизбежно приведет к изменению контекста защиты - циклу звонка.Насколько глубоко это становится, зависит от вызова.Если вызов достигает кольца 0, код ядра имеет доступ ко всем потокам пользователя и ядра, поэтому код ядра в общем случае не может быть описан как «процесс» - то, что имеет контекст управления памятью / безопасности для обеспечениязащита.Как правило, цикл цикла в / из кольца 0 занимает более 2000 циклов процессора (кроме немецких опер, где он занимает три дня).Эти издержки абсолютно необходимы независимо от того, приводит ли системный вызов к переключению контекста потока и / или переключению контекста процесса.
В тех случаях, когда системный вызов приводит к изменению набора работающих потоков, произойдетбыть дополнительными затратами на переключение контекста потока, особенно если изменение требует вытеснения потока, работающего на другом процессоре.
Если какой-либо вновь запущенный поток принадлежит процессу, отличному от потока, которому предшествуетэто еще большая нагрузка на переключение контекста процесса.