При использовании этого уровня ядро не знает о существовании потоков
- все управление потоками реализуется приложением с помощью специальных
библиотек. Переключение потоков не требует привилегий режима
ядра, а планирование полностью зависит от приложения. При этом ядро
управляет деятельностью процесса. Если поток вызывает системную функцию,
то будет блокирован весь процесс, но для поточной библиотеки этот поток
будет находиться в активном состоянии. Здесь состояние потока не зависит
от состояния процесса.
Преимущества пользовательских потоков в следующем:
переключение потоков не требует участия ядра - нет переключения из
режима задачи в режим ядра;
планирование может определяться приложением - при этом выбирается
наилучший алгоритм;
пользовательские потоки могут применяться в любой ОС - необходимо
лишь наличие совместимой библиотеки потоков.
Недостатки пользовательских потоков:
большинство системных вызовов является блокирующими и ядро блокирует
процессы - включая все потоки в пределах процесса;
ядро может направлять на процессоры только процессы - два потока в
пределах одного и того же процесса не могут выполняться одновременно
на двух разных процессорах.