Операционные системы: архитектура и управление процессами. Макаров П.С. - 75 стр.

UptoLike

Составители: 

75
Рис. 32
В программе, работа которой полностью основана на потоках, работаю-
щих на уровне ядра, все действия по управлению потоками выполняются
ядром. В области приложений отсутствует код, предназначенный для управле-
ния потоками. Вместо него используется интерфейс прикладного программиро-
вания (application programming interface — API) средств ядра, управляющих по-
токами. Примерами такого подхода являются операционные системы OS/2,
Linux и W2K.
На рис. 32 проиллюстрирована стратегия использования потоков на
уровне ядра. Любое приложение при этом можно запрограммировать как мно-
гопоточное; все потоки приложения поддерживаются в рамках единого процес-
са. Ядро поддерживает информацию контекста процесса как единого целого, а
также контекстов каждого отдельного потока процесса. Планирование выпол-
няется ядром исходя из состояния потоков. С помощью такого подхода удается
избавиться от двух упомянутых ранее основных недостатков потоков пользова-
тельского уровня. Во-первых, ядро может одновременно осуществлять плани-
рование работы нескольких потоков одного и того же процесса на нескольких
процессорах. Во-вторых, при блокировке одного из потоков процесса ядро мо-
жет выбрать для выполнения другой поток этого же процесса. Еще одним пре-
имуществом такого подхода является то, что сами процедуры ядра могут быть
многопоточными.
Основным недостатком подхода с использованием потоков на уровне яд-
ра по сравнению с использованием потоков на пользовательском уровне явля-
ется то, что для передачи управления от одного потока другому в рамках одно-