#multithreading
#многопоточность
Вопрос:
предположим, что время, необходимое для переключения между пользовательским режимом и режимом ядра, равно t1, а для переключения между двумя процессами — t2. Что больше t1 или t2?
Комментарии:
1. Домашнее задание? Если это так, пожалуйста, будьте откровенны с этим.
Ответ №1:
Я думаю, что t2 всегда больше, потому что переключение процессов происходит через режим ядра.
Ответ №2:
Теоретически это зависит от платформы. На практике переключение с одного процесса на другой обычно происходит из исходного процесса в режим ядра, затем ядро решает, какой процесс запланировать следующим, затем происходит переключение из режима ядра в пользовательский режим, в котором выполняется второй процесс.
Таким образом, переключение с одного процесса на другой включает переключение из пользовательского режима в режим ядра, плюс многое другое, поэтому оно будет медленнее.
Ответ №3:
Это зависит от платформы. Вы должны профилировать свой.
Комментарии:
1. Вы могли бы попробовать выполнить простой системный вызов в цикле и посмотреть, насколько это быстро. Затем запустите программу, которая часто вызывает
sched_yield()
, и посмотрите, как это происходит (сколько времени пройдет, пока она вернет управление). Я думаю, вы могли бы научиться чему-то таким образом, с некоторыми уточнениями. Тем не менее, ваш ответ о том, что t2 в целом длиннее, кажется интуитивно разумным.