почему потоки уровня пользователя не нуждаются в системном вызове? - PullRequest
1 голос
/ 09 апреля 2011

Я прочитал, что преимущество потоков пользовательского уровня в том, что они не требуют вызовов ядра для переключения.Не требует ли загрузка регистров (IP, SP) системного вызова?Я запрограммировал потоки пользовательского уровня в C, используя функции - getcontext, setcontext?Разве эти функции не вызывают системные вызовы?

1 Ответ

2 голосов
/ 09 апреля 2011

(Большинство) регистров, видимых для кода режима пользователя, также можно сохранять / восстанавливать в коде режима пользователя.

Так как поток пользовательского режима (по крайней мере, обычно) не переключается приоритетно, вам все равно обычно не нужно сохранять все регистры. Типичная реализация использует setjmp и longjmp для сохранения / восстановления необходимого состояния. Обычно они не связаны с переключением режимов пользователя / ядра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...