Различие между уровнем пользователя и поддерживаемыми ядром потоками?

Я просматривал несколько примечаний на основе этой темы, и хотя у меня есть понимание потоков в целом, я не действительно к верному в различиях между потоками уровня пользователя и уровня ядра.

Я знаю, что процессы в основном составлены из нескольких потоков или единственного потока, но являются ими поток двух предшествующих упомянутых типов?

Из того, что я понимаю, поддерживаемые ядром потоки имеют доступ к ядру для системных вызовов и другого использования, не доступного потокам уровня пользователя.

Так, потоки уровня пользователя, просто распараллеливает созданный программистом, когда затем используют поддерживаемые ядром потоки для выполнения операций, которые не могли обычно выполняться из-за его состояния?

61
задан 15 April 2016 в 12:43

1 ответ

Заключите в кавычки отсюда:

Потоки Уровня ядра

Для создания параллелизма более дешевым аспект выполнения процесса выделен в потоки. По сути, ОС теперь управляет потоками и процессами. Все операции потока реализованы в ядре, и ОС планирует все потоки в системе. ОС справилась, потоки называют потоками уровня ядра или процессами легкого веса. NT: Потоки Солярис: Легкие процессы (LWP).

В этом методе, ядро знает об и управляет потоками. Никакая система во время выполнения не необходима в этом случае. Вместо таблицы потока в каждом процессе ядро имеет таблицу потока, которая отслеживает все потоки в системе. Кроме того, ядро также поддерживает традиционную таблицу процессов для отслеживания процессы. Ядро Операционных систем обеспечивает системный вызов, чтобы создать и управлять потоками.

Преимущества:

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

Недостатки:

потоки уровня ядра являются медленными и неэффективными. Например, операции потоков являются сотнями времен медленнее, чем операция потоков уровня пользователя. Так как ядро должно управлять и запланировать потоки, а также процессы. Это требует, чтобы полный блок управления потока (TCB) для каждого потока поддержал информацию о потоках. В результате существует значительный служебный и увеличенный в сложности ядра.

Потоки Уровня пользователя

потоки Уровня ядра делают параллелизм намного более дешевым, чем процесс потому что, а тем более состояние, чтобы выделить и инициализировать. Однако для мелкомодульного параллелизма, потоки уровня ядра все еще страдают от слишком много служебного. Операции потока все еще требуют системных вызовов. Идеально, мы требуем, чтобы операции потока были с такой скоростью, как вызов процедуры. Потоки уровня ядра должны быть общими для поддержки потребностей всех программистов, языков, времени выполнения, и т.д. Для такого мелкомодульного параллелизма, нам нужны еще "более дешевые" потоки. Для создания потоков дешевыми и быстрыми они должны быть реализованы на уровне пользователя. Потоками уровня пользователя управляет полностью система во время выполнения (библиотека уровня пользователя).The, ядро знает, что ничто об уровне пользователя не распараллеливает и управляет ими, как будто они были однопоточными процессами. Потоки уровня пользователя являются маленькими и быстрыми, каждый поток представлен ПК, регистром, стеком и небольшим блоком управления потока. Создавание нового потока, switiching между потоками, и синхронизация потоков сделаны через вызов процедуры. т.е. никакое участие ядра. Потоки уровня пользователя являются сотней времен быстрее, чем потоки Уровня ядра.

Преимущества:

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

Недостатки:

потоки Уровня пользователя не являются идеальным решением как со всем остальным, они - компромисс. С тех пор потоки Уровня пользователя невидимы для ОС, они не хорошо интегрируются с ОС. В результате OS может принять плохие решения как планирование процесса с неактивными потоками, блокирование процесса, поток которого инициировал ввод-вывод даже при том, что процесс имеет другие потоки, которые могут работать и непланирование процесса с потоком, содержащим блокировку. Решение этого требует, чтобы коммуникация между между ядром и уровнем пользователя распараллелила менеджера. Существует отсутствие координации между потоками и ядром операционной системы. Поэтому процесс как целый получает один интервал времени irrespect того, имеет ли процесс один поток или 1 000 потоков в. Это до каждого потока для отказа от управления другим потокам. Потоки уровня пользователя требуют не блокирующегося системного вызова т.е. многопоточного ядра. Иначе весь процесс будет заблокированный в ядре, даже если будут выполнимые потоки, оставленные в процессах. Например, если один поток вызывает отсутствие страницы, блоки процесса.

1
ответ дан 31 October 2019 в 16:04

Другие вопросы по тегам:

Похожие вопросы: