Способы реализации пакета потоков:
· в пространстве пользователя (user - level threads – ULT);
· в ядре (kernel – level threads – KLT).
ДОСТОИНСТВА:
· можно реализовать в ОС, не поддерживающей потоки без каких-либо изменений в ОС;
· высокая производительность, поскольку процессу не нужно переключаться в режим ядра и обратно;
· ядро о потоках ничего не знает и управляет однопоточными процессами;
· имеется возможность использования любых алгоритмов планирования потоков с учетом их специфики;
· управление потоками возлагается на программу пользователя.
НЕДОСТАТКИ:
· системный вызов блокирует не только работающий поток, но и все потоки того процесса, к которому он относится;
· приложение не может работать в многопроцессорном режиме, так как ядро закрепляет за каждым процессом только один процессор;
· при запуске одного потока ни один другой поток а рамках одного процесса не будет запущен пока первый добровольно не отдаст процессор;
· внутри одного потока нет прерываний по таймеру, в результате чего невозможно создать планировщик по таймеру для поочередного выполнения потоков.
|
|
ДОСТОИНСТВА:
· возможно планирование работы нескольких потоков одного и того же процесса на нескольких процессорах;
· реализуется мультипрограммирование в рамках всех процессов (в том числе одного);
· при блокировании одного из потоков процесса ядро может выбрать другой поток этого же (или другого процесса);
· процедуры ядра могут быть многопоточными.
НЕДОСТАТКИ:
Необходимость двукратного переключения режима пользователь – ядро, ядро – пользователь для передачи управления от одного потока к другому в рамках одного и того же процесса.