5

Я обнаружил, что потоки уровня пользователя намного быстрее потоков уровня ядра, но я не смог найти убедительного примера ПОЧЕМУ потоки уровня пользователя быстрее потоков уровня ядра? Может ли кто-нибудь объяснить это мне.

Потоки уровня ядра медленные и неэффективные. Например, операции с потоками в сотни раз медленнее, чем у потоков пользовательского уровня.

взяты отсюда

1 ответ1

7

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

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

Однако, разница невелика, если ваши потоки преимущественно выполняют операции ввода-вывода, поскольку в любом случае они должны проходить через ядро. Это наиболее важно, если вы пытаетесь реализовать какую-то симуляцию с очень большим количеством независимых процессов. В этом случае вам нужно внимательно следить за тем, какие механизмы синхронизации потоков вы используете, поскольку некоторые из них также доходят до ядра и запускают переключение контекста.

http://www.cs.rochester.edu/u/cli/research/switch.pdf «В общем, косвенная стоимость переключения контекста варьируется от нескольких микросекунд до более тысячи микросекунд для нашей рабочей нагрузки».

Редактирование: потоки пользовательского уровня поддерживают стек для каждого потока и могут сохранять или не сохранять регистры общего назначения в зависимости от архитектуры и правил clobber его соглашения о вызовах. Это может быть так же просто, как выгрузка регистров в стек, переход на новый адрес и добавление нескольких регистров, которые могут находиться в вашем кэше, если этот поток был запущен недавно.

Переключатели контекста на уровне ядра также изменяют карту памяти путем записи в TLB и изменения уровня безопасности (уровня привилегий или "кольца") процессора. Смотрите "Вопросы производительности"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .