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

#multithreading

#многопоточность

Вопрос:

предположим, что время, необходимое для переключения между пользовательским режимом и режимом ядра, равно t1, а для переключения между двумя процессами — t2. Что больше t1 или t2?

Комментарии:

1. Домашнее задание? Если это так, пожалуйста, будьте откровенны с этим.

Ответ №1:

Я думаю, что t2 всегда больше, потому что переключение процессов происходит через режим ядра.

Ответ №2:

Теоретически это зависит от платформы. На практике переключение с одного процесса на другой обычно происходит из исходного процесса в режим ядра, затем ядро решает, какой процесс запланировать следующим, затем происходит переключение из режима ядра в пользовательский режим, в котором выполняется второй процесс.

Таким образом, переключение с одного процесса на другой включает переключение из пользовательского режима в режим ядра, плюс многое другое, поэтому оно будет медленнее.

Ответ №3:

Это зависит от платформы. Вы должны профилировать свой.

Комментарии:

1. Вы могли бы попробовать выполнить простой системный вызов в цикле и посмотреть, насколько это быстро. Затем запустите программу, которая часто вызывает sched_yield() , и посмотрите, как это происходит (сколько времени пройдет, пока она вернет управление). Я думаю, вы могли бы научиться чему-то таким образом, с некоторыми уточнениями. Тем не менее, ваш ответ о том, что t2 в целом длиннее, кажется интуитивно разумным.